Reputation: 107
this is my matlab source code
% let 'y' is a workspace file containg sampled data from DSO.
fs=2500; %sampling freq
T=1/fs; % sample time
L=2500; % length of the signal
t=(0:L-1)*T; %time vector
NFFT=2^nextpow2(L); %next power of 2 from length of y.
%p = nextpow2(y) returns the smallest power of two that is greater than or equal to the absolute value of L.
%(That is, p that satisfies 2^p >= abs(L)).
%This function is useful for optimizing FFT operations, which are most efficient when sequence length is an exact power of two.
%If A is non-scalar, nextpow2 returns the smallest power of two greater than or equal to length(L).
Y=fft(y,NFFT)/L;
f=fs/2*linspace(0,1,NFFT/2);
% to plot signal-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-sided amplitude spectrum of y(t)');
xlabel('Frequency (Hz');
ylabel('|Y(f)');
grid;
bar(f,2*abs(Y(1:NFFT/2)),'BarWidth',1)
i am having a sampled data from digital oscilloscope & i want to get FFT in a bar graph form.
after plotting the figure the different label & title & grid is nor appearing.
Upvotes: 0
Views: 924
Reputation: 4685
The problem is you are plotting over your initial plot.
% to plot signal-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2))) % create a plot
title('Single-sided amplitude spectrum of y(t)'); % annotate it nicely
xlabel('Frequency (Hz');
ylabel('|Y(f)');
grid;
% throw away all that nice data and plot and plot over it with this:
bar(f,2*abs(Y(1:NFFT/2)),'BarWidth',1)
Try this:
figure;
% to plot signal-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-sided amplitude spectrum of y(t)');
xlabel('Frequency (Hz');
ylabel('|Y(f)');
grid;
figure;
bar(f,2*abs(Y(1:NFFT/2)),'BarWidth',1)
Upvotes: 2