FFT of single max sided from signal
1 次查看(过去 30 天)
显示 更早的评论
I'm trying to get frequency of signal.But after applying FFT it doesn't shows 200e3 (which is given) ?
Attaching the code and picture how the end result should be.
Thanks
load ('T1.mat')
f = 200e3; % frequency
T = 1/f ;
sf = 1/t(1,2);
n =5;
tt = n*T;
t1 = 0:1/sf:tt; % total time cycle
sinewave = sin(2*pi*f*t);
figure(1)
plot(t,sinewave)
%fourier
figure
xdft = fft(sinewave,1024);
plot(abs(xdft))
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/553352/image.png)
0 个评论
采纳的回答
Mathieu NOE
2021-3-17
hello
this is the code fixed :
FYI, the frequency in your code is 200 and not 100 kHz as in image , but you can easily change that
cheers
clc
clearvars
load ('T1.mat')
f = 200e3; % frequency
T = 1/f ;
sf = 1/t(1,2);
n =5;
tt = n*T;
t1 = 0:1/sf:tt; % total time cycle
sinewave = sin(2*pi*f*t);
figure(1)
plot(t,sinewave)
%fourier
nfft = 1024;
xdft = fft(sinewave,nfft);
% one sidded fft spectrum % Select first half
if rem(nfft,2) % nfft odd
select = (1:(nfft+1)/2)';
else
select = (1:nfft/2+1)';
end
xdft = xdft(select)*2/nfft;
freq_vector = (select - 1)*sf/nfft;
figure
plot(freq_vector/1000,abs(xdft)) % freq divided by 1000 to be displayed in kHz
xlabel('kHz');
ylabel('Amplitude');
xlim([0 2*f/1000]);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Signal Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!