Finding the main frequency after fft
古いコメントを表示
Hi,
I've got these blocks in simulink:
Sine Wave -> Buffer -> Matrix sum -> Matlab function.
I have to find the frequency of the input, so I wrote some code in Matlab function (by the http://www.mathworks.com/help/techdoc/ref/fft.html) :
{
function [freq, amp] = fcn(u)
%#codegen
Fs=2000;
T=1/Fs;
L=length(u);
t = (0:L-1)*T;
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(u,NFFT);
f = Fs/2*linspace(0,1,NFFT/2+1);
amp = abs(max(Y));
}
It's working properly, I'm getting the maximum value, but I can't get from code frequency of maxium value :/ how Can I get it? Thank You for response.
Best regards, Pawel
採用された回答
その他の回答 (1 件)
Pawel Burzynski
2011 年 9 月 17 日
0 投票
3 件のコメント
Wayne King
2011 年 9 月 17 日
Glad it's working. Your mismatch is likely due to your frequencies not falling directly on a DFT bin.
Wayne
Pawel Burzynski
2011 年 9 月 23 日
Wayne King
2011 年 9 月 23 日
Can you please provide code? It is hard to say the source of the error without a coded example.
カテゴリ
ヘルプ センター および File Exchange で Spectral Measurements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!