時系列データの位相を変える方法はありますか?

16 次查看(过去 30 天)
MathWorks Support Team
1次元の時系列のデータの位相を変える方法があれば教えてください。

采纳的回答

MathWorks Support Team
時系列データを周波数データに変換してから位相量のシフトを行い、
再度時系列データに戻すプログラムを作成する必要があります。
下記にそのプログラム例をご紹介致します。
・変数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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 時系列オブジェクト 的更多信息

标签

尚未输入任何标签。

产品


版本

R2012b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!