ヒルベルト変換について(解析信号)

11 ビュー (過去 30 日間)
sz
sz 2020 年 6 月 10 日
回答済み: Naoya 2020 年 6 月 16 日
下記の人口データの最初の1000msの解析信号を求めて、瞬時振幅と瞬時位相を時間の関数としてプロットしたいのですが、
どのようにするか教えて頂きたいです。
解析信号の求めるというのはヒルベルト変換のことなのかfftかも良く分からないのですが、
分かる方いましたらコメント頂きたいです、
よろしくお願いいたします
f1=10;
f2=23;
fs=250; サンプル周波数
L=1000;
T=1/fs;
t=(0:L-1)*T;
S=10*sin(2*pi*f1*t+pi*1/2)+ 3*sin(2*pi*f2*t +pi*3/2); %人口データ
y=hilbert(smoothdata1); %ヒルベルト変換
p2=abs(y); %振幅
plot(t,p2); %プロット

採用された回答

Naoya
Naoya 2020 年 6 月 16 日
ヒルベルト変換を用いた瞬時振幅と瞬時位相という点では、 hilebert関数で得られる複素数ベクトルに対して、 振幅 -> abs , 位相 -> angle の結果を求めれば宜しいかと思います。
以下は 0 ~ 10sec までの信号で、周波数が 5 -> 15 Hz, 振幅が 1 -> 11 に変化するような信号でヒルベルト変換から、瞬時振幅、瞬時位相、瞬時周波数を求めてみた例となります。
Fs = 100; % サンプリング周波数 (Hz)
t = 0:1/Fs:10;
% 解析対象信号
x = chirp(t, 5,10, 15).*(t+1);
% ヒルベルト変換
y = hilbert(x);
% 瞬時振幅
subplot(3,1,1), plot(t, abs(y))
% 瞬時位相
subplot(3,1,2), plot(t, angle(y))
% 瞬時周波数
subplot(3,1,3), plot(t(2:end), diff(unwrap(angle(y)))*Fs/(2*pi))
ylim([4 16])

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeHilbert and Walsh-Hadamard Transforms についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!