HOW DO I GET AMPLITUDE AND FREQUENCY FROM A WAVE SIGNAL
8 ビュー (過去 30 日間)
古いコメントを表示
i have a wave signal data in the form of time and phase..how do i get the amplitude and frequency from it?
0 件のコメント
採用された回答
Wayne King
2012 年 8 月 22 日
編集済み: Wayne King
2012 年 8 月 22 日
Use the discrete Fourier transform. Here is an example.
t = 0:0.001:1-0.001; % sampled at 1 kHz
x = cos(2*pi*100*t); % 100-Hz sine wave
xdft = fft(x); % Obtain the DFT
camp = 2/length(x)*xdft(101);
You see that camp is 1. Now let's change the phase.
x = cos(2*pi*100*t-pi/4); % 100-Hz sine wave -- phase shift -pi/4
xdft = fft(x); % Obtain the DFT
camp = 2/length(x)*xdft(101);
abs(camp) % amplitude
angle(camp) % phase
To get the frequency, you have to know how to convert between the DFT "bins" and a meaningful frequency
In my example, the sampling frequency is 1000 Hz, and the DFT bins are spaced at Fs/length(x). You have to keep in mind that the first bin is 0 Hz. Here I get the frequency of the maximum.
[~,index] = sort(abs(xdft),'descend');
Fs = 1000;
(index(1)*Fs)/length(x)-(Fs/length(x))
2 件のコメント
André Luiz Regis Monteiro
2014 年 8 月 6 日
Wayne, why do you use xdft(101)? Why 101? In your example you got the frequency of the maximum, but if my signal is composed by 4 signals added, how can I get this 4 frequencies? Thanks a lot.
poornima.a A
2018 年 1 月 29 日
i am also having the same dounbt,why you had used that 101? what it means?.plz give the detailed answer sir
その他の回答 (2 件)
参考
カテゴリ
Help Center および File Exchange で Spectral Measurements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!