- 締切済み
パワースペクトルについて教えてください
matlabである信号の時間t(フレーム数)における周波数fのパワースペクトルの表の作り方を教えてください。 例 44100フレーム目の周波数100Hzのパワースペクトルが1のとき P(44100、100)=1となるPが作りたいです
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ICE_FALCON
- ベストアンサー率56% (63/111)
回答No.1
spectrogram関数使ってみては? http://www.mathworks.co.jp/help/ja_JP/toolbox/signal/spectrogram.html これが重いのなら、特定の周波数だけ演算してみては? 例えばこんな感じ。 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ないんで未確認です。