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

16 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2015 年 7 月 23 日
回答済み: MathWorks Support Team 2015 年 7 月 23 日
1次元の時系列のデータの位相を変える方法があれば教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2015 年 7 月 23 日
時系列データを周波数データに変換してから位相量のシフトを行い、
再度時系列データに戻すプログラムを作成する必要があります。
下記にそのプログラム例をご紹介致します。
・変数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 Center および File Exchange時系列オブジェクト についてさらに検索

タグ

タグが未入力です。

製品


リリース

R2012b

Community Treasure Hunt

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

Start Hunting!