Is it possible to define the "Fmax" on the fft function?

조회 수: 4 (최근 30일)
Luís Tomé
Luís Tomé 2020년 2월 3일
댓글: Star Strider 2020년 2월 4일
Hello everyone
I am currently developing an algorithm in matlab to analyze signals from a MEMS acelerometer. Before trying to acquire the signal and do that programming i must understand how do fft and filters in matlab work. I must say beforehand that this algorithm must be as close as to normal maintenance acquisition and signal processing systems are (or at least i intend it to be).
To do that i have defined the initial variables that in that equipment i define initially to start the acquisition of the signal and processing. Those variables are the Fmax, the maximum frequency i want to see in the spectrum and with that value it defines the sampling frequency of my ADC, by obeying to the shannon theorem, and the cutting frequency of the low-pass filter i also want. I also defined the sampling time, ts, and the number of lines i want to have as resolution. (numbers are just experimental, i would appreciate if anyone would help me on that too, because as i said i want it to be an algorithm of a system to acquire and process aceleration signals of machines).
clear
clc
%% Initial Variables
Fmax=100; %maximum frequency [Hz]
Fs=2.56*Fmax; %sampling frequency as the Shannon's Theorem defines [Hz]
ts=1/Fs; %sampling time
linhas=1000; %lines number to work as resolution in the frequency spectrum
L=1000; %length of signal
t=(0:L-1)*ts; %time vector
%
I have defined 2 sinusoidal functions with 2 different frequencies. Summed them and got my "real signal".
%% Construção do Sinal a analisar
f1=sin(2*pi*15*t); %Sinal sinusoidal da 1ª frequência sin(2*pi*[Hz])
f2=sin(2*pi*51*t); %Sinal sinusoidal da 2ª frequência sin(2*pi*[Hz])
%plot dos sinais sinusoidais simples
figure(1)
subplot(3,1,1)
plot(t,f1);
title('1º Sinal Sinusoidal');
xlabel('tempo (s)');
subplot(3,1,2)
plot(t,f2);
title('2º Sinal Sinusoidal');
xlabel('tempo (s)');
%plot do sinal a analisar
sinal=f1+f2; %Sinal constituído por 2 frequências
subplot(3,1,3)
plot(t,sinal);
title('Sinal Complexo');
xlabel('tempo (s)');
Next i did the spectral analysis of "sinal" just like this:
%% Spectral Analysis
NFFT=2^nextpow2(linhas);
RBW=Fs/2*linspace(0,1,NFFT/2+1);
F=fft(sinal,NFFT)/L;
figure(4)
subplot(1,1,1)
plot(RBW,2*abs(F(1:NFFT/2+1)));
title('Espetro de Frequências')
xlabel('Frequência(Hz)')
ylabel('Amplitude')
I know it misses the filter, but i'm adding complexity at slow rate. Like it is i obtain the correct frequencies and amplitude of the signal but i want the plot to adjust the x-axis to the Fmax i defined but i'm not seeing how, and if the resolution i want is working. Perhaps i'm asking too many questions but i want help as i'm no matlab or signal processing expertise.
  댓글 수: 5
Luís Tomé
Luís Tomé 2020년 2월 4일
So you're saying that an anti-aliasing filter for what i want, it's useless if implemented via software? In my signal processing cycle i have the acelerometer connected to arduino microcontroller then i would have the hardware implemented anti-alias filter and aftwerwards i would use matlab as the ADC, window applying and then the spectral analysis. Is this the correct way of doing it?
I appreciate the help, info and knowledge so far, you've been great
Star Strider
Star Strider 2020년 2월 4일
So you're saying that an anti-aliasing filter for what i want, it's useless if implemented via software?
Yes. If the anti-aliasing filter is not implemented in hardware at the input of the ADC, the aliased frequencies will already be present in the sampled signal, and are then impossible to remove.
Once you have tha anti-aliased sampled signal, you can do whatever you want with it. There is always a good argument to be made for using the highest sampling frequency possible (1 kHz is standard) in order to provide the best time and frequency resolution.
My pleasure!

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by