I have an output from a sensor with Fs=1000 data points per second.
I want to see frequency.
So i want to display a time domain signal to frequency domain.
I am not happy with the following code (from matlab help example), Could any body please help to make good conversion from time to frequency domain?
%%%%%%%%%%%%%%%
%Fs = 1000; % Sampling frequency
%T = 1/Fs; % Sample time
%L = 1000; % Length of signal
%t = (0:L-1)*T; % Time vector
%% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
%x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%y = x + 2*randn(size(t)); % Sinusoids plus noise
%plot(Fs*t(1:50),y(1:50))
%title('Signal Corrupted with Zero-Mean Random Noise')
%xlabel('time (milliseconds)')
%%%%%%%%%%%%%%%
% here is example code
y % is data from a sensor channel % one can use y from above example
Fs=1000;
L=length(y);
NFFT = 2^nextpow2(L); % Next power of 2 from length of d
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
best regards,
muzaffar
In what way are you not happy with it?
I ask because I'm about to embark on the same journy, and would apreciate any help I could get out of the mishaps of others.
Another simple question. Does your data contain "noise" of any kind, such as a shunt signal for calibration, ringing when shutting down, etc? It's most likely something that you have been thinking about and avoided. But if not so, said noise could introduse serious gibberish into your frequency power spectra.