時系列データを周波数データに変換してから位相量のシフトを行い、
再度時系列データに戻すプログラムを作成する必要があります。
下記にそのプログラム例をご紹介致します。
・変数Pを使って位相を変更します。
・下記プログラムでは、疑似的に入力信号(x)を作成していますが、
CSVファイルからMATLAB上に取り込んだデータに置き換えてご使用頂けます。
%% Begin Code
t = 0:1/100:2;
x = sin(2*pi*2*t); % 入力信号
P = pi/2; % 位相シフト量 (rad)
%時系列データを周波数データ
y = fft(x); % 入力信号をフーリエ変換
mag = abs(y); % 振幅応答を算出
phs = angle(y); % 位相応答を算出
% DC 成分を除く、ナイキスト周波数成分まで位相量をシフト
phs(2:ceil(length(y)/2)) = phs(2:ceil(length(y)/2)) + P;
% ナイキスト周波数まで、複素数信号として再構成
y_dash = mag(1:ceil(length(y)/2)) .* exp(i*phs(1:ceil(length(y)/2)));
% 折り返し成分を付加 (折り返し成分は複素共役の関係となる)
y_dash2 = [y_dash, conj(y_dash(end:-1:2))];
z = ifft(y_dash2); % 逆フーリエ変換
% 結果を比較
plot(t,x,t,z)
grid on, ylim([-1.2 1.2])
%% End Code