時系列データの位相を変える方法はありますか?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 23 Jul. 2015
Beantwortet: MathWorks Support Team
am 23 Jul. 2015
1次元の時系列のデータの位相を変える方法があれば教えてください。
Akzeptierte Antwort
MathWorks Support Team
am 23 Jul. 2015
時系列データを周波数データに変換してから位相量のシフトを行い、
再度時系列データに戻すプログラムを作成する必要があります。
下記にそのプログラム例をご紹介致します。
・変数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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 時系列オブジェクト finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!