How to decrease frequency resolution by keeping RMS same in MATLAB

9 views (last 30 days)
Hello, I am having the FFT of a signal with 0.1 Hz resolution with total frequency range of 0Hz to 500Hz (Sampling rate is 1000Hz, time signal length is 10sec), but i want FFT with 0.390016Hz resolution, how can i perform this change in MATLAB, as i am new to MATLAB, any help in this regard would be much appreciated, thanks in advance

Accepted Answer

dpb
dpb on 25 Jun 2021
Frequency resolution is solely dependent upon the sample rate and number of FFT points used -- you since the number of points is an integer you may/may not be able to hit the exact frequency spacing to the full precision, but can get close...
Fs=1000;
dfWanted=0.390016;
NFFT=Fs/2/dfWanted;
>> NFFT
NFFT =
1.281998687233344e+03
>>
Hence, your closest N for the desired frequency resolution would be
>> round(NFFT)
ans =
1282
>>
and the actual df you'll get will be
>> Fs/2/1282
ans =
0.390015600624025
>>
  9 Comments
dpb
dpb on 29 Jun 2021
Interesting, indeed. Be curious how that would/does compare to the idea of converting back to time domain and recomputing. I note they don't give any real examples of measured signals
Gaurav Kumar
Gaurav Kumar on 30 Jun 2021
Just to have a general understanding, whether I was doing it correctly or not, I will put forth my process:
To change the resolution to 0.390Hz, i had reduced the length of the time signal to contain 2563 data points, meaning i have reduced the original 10.000 sec duration time signal to 2.563 sec duration signal (time step is 0.001 second), with that the FFT which I received was of 0.39Hz resolution, however the FFT didn't match the FFT data from the other software (which might be using the interpolation/decimation function shared above).
However, interesting point is that, when i calculate the FFT at 0.1Hz which is the lowest possible resolution for my time signal, the FFT from MATLAB matches with that of the other software exactly
So, the only thing I could confirm here is that the FFT that has been generated for 0.390016Hz resolution from the other software (with which I wanted to match my MATLAB results) is not changing the time signal length or the sampling rate, it is just using some sort of interpolation/decimation function and guess that's correct as the professionals from all over the world are using its data (Siemens TestLab).
Please correct the process which I am following for obtaining 0.39Hz FFT data from MATLAB, if i am doing something wrong, thanks a lot again for your valuable inputs and suggestions.

Sign in to comment.

More Answers (0)

Categories

Find more on Signal Processing Toolbox in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!