プロが教えるわが家の防犯対策術!

matlabである信号の時間t(フレーム数)における周波数fのパワースペクトルの表の作り方を教えてください。


44100フレーム目の周波数100Hzのパワースペクトルが1のとき
P(44100、100)=1となるPが作りたいです

A 回答 (1件)

spectrogram関数使ってみては?


http://www.mathworks.co.jp/help/ja_JP/toolbox/si …

これが重いのなら、特定の周波数だけ演算してみては?
例えばこんな感じ。
for I=1:???
% dataのサイズは[1 128] フレーム
data = ???
%窓関数適用
win = window(@hamming,128);
data = data.*win;
% fは正規化周波数0~64を指定
re = sum( data .* cos(2*pi()*f*[0:127]/128) / 128 );
im = sum( data .* -sin(2*pi()*f*[0:127]/128) / 128 );
p(I) = re.^2+im.^2;
%DC,ナイキスト以外は倍(折り返し)
if !((f == 0) || (f == 64))
p(I) = p(I)*2;
end
%窓関数用の正規化
p(I) = p(I)*128*2/sum(win);
end

手元にMATLABないんで未確認です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!