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
Prashant Kumar answered .
2025-11-20
ere 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