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

조회 수: 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 CenterFile Exchange에서 時系列オブジェクト에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

제품


릴리스

R2012b

Community Treasure Hunt

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

Start Hunting!