problem in plotting fft for set of samples

Hello,
i am trying to plot FFT samples vs freq.. bt not getting the exact peak at expected frequency.
i have attached the samples in excel sheet,..plz can some one help me and guide me to get peaks at expected frequency.
clear
N=3584;
n=0:3584
ts=.0002;
fs=1/ts
ts1=0.02
f=1/(N*ts);
t=[0:N-1]*ts;
g=input('enter the frequency required')
ref=3*sin(2*pi()*g*t)
figure
plot(t,ref),axis tight
fref=abs(fft(ref))
figure
plot(abs(fref))
axis tight
x=xlsread('41hz.xlsx')
figure
plot(x),grid on
axis tight
Xf=abs(fft(x));
f1=[0:N-1]*f
plot(f1,abs(Xf)),grid on
axis tight
n_2=ceil(N/2)
figure
plot(f1(1:n_2),abs(Xf(1:n_2))),grid on

2 Comments

What value are you inputting for g?

Sign in to comment.

 Accepted Answer

Here is the corrected code that computes fft and plots accordingly.
N=3584; g=50;
ts=.0002;
fs=1/ts;
t=[0:N-1]*ts;
L = numel(t); % Length of your signal
f = fs*(0:(L/2))/L; % Frequency values
ref=3*sin(2*pi()*g*t);
figure
plot(t,ref),axis tight, title('Time domain signal')
fref=abs(fft(ref));
figure
plot(f, abs(fref(1:N/2+1))); % plot f vs. spectrum magnitude
xlim([0, 100])
%% Working with your measured/sampled data
DATA = xlsread('DATA_ES.xlsx', 'Sheet2');
L = numel(DATA(:, 1)); % Length of the signal
figure
ts=.0002; fs=1/ts;
Xf=abs(fft(DATA(:,1))); % Assuming Column 1 contains frequency response data
f=fs*(0:(L/2))/L;
n_2=ceil(N/2);
plot(f,abs(Xf(1:n_2+1))),grid on

More Answers (0)

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!