11 views (last 30 days)

Hello. I used Matlab to compute the FFT for my force vs time signals. The result was amplitude vs frequency, however, I would like to convert my amplitude signals back to units of force and plot force as a function of frequency. Does anyone have any idea on how I can do that with my current code? Thanks in advance.

Here is my code in a screen shot.

Ameer Hamza
on 9 Nov 2020

Ameer Hamza
on 11 Nov 2020

David Goodmanson
on 9 Nov 2020

Edited: David Goodmanson
on 9 Nov 2020

Hi Kev,

The first thing is, the time and frequency arrays have to be correct. You are not actually using the 'time' variable but presumably it is equally spaced and consistent wth your choice of Fs. The frequency grid calculation is correct except that L is supposed to be the number of points in the time array (and also the Fx1 array). L is set at 4999.94, close to 5000. But you say that there are 1e5 points. With 5000 the frequency array is going to be incorrect, as will the amplitude in the frequency domain.

For the amplitude, if the data reperesents a periodic function that keeps going on in time, then using Y/ L is correct. However, using 5000 for L instead of 1e5 gives an answer that is too large by a factor of 20, which is what you are off by.

In this case the units in the frequency domain are Nt.

If the data represents a nonrepeated pulse function of some kind. such as a decaying oscillation, then there are two possibilities. One is to decree that the decaying oscillation repeats as it would if you put many of your existing time windows side-by-side. Then (after fixing up L) you use Y/L as above. That keeps things simple, as long as you are aware of what is being represented.

The other possibility is to say it really is a one-time occurrence. In that case the natural assumption is that the fft represents an approximation to the fourier integral of a continuous function. Since you are approximating Integral [something] dt, dt is replaced by delta_t = 1/Fs, the spacing of the time array. The fft is multiplied by delta_t and the result is Y/Fs.

In this case the units in the frequency domain are Nt/Hz.

David Goodmanson
on 11 Nov 2020

Hi Kev,

That means that there is a continuous wave fourier component with an amplitude of 9 N at that frequency, which contributes to the force in the time domain. If 50 Hz were an isolated frequency, you would see a wave of that size in the time domain. When there are a lot of nearby frequencies as well, things get mixed together and you don't see that.

When you have a lot of amplitudes that are dense in frequency, that's an argument for the second mehtod I mentioned in the answer. When the horizontal scale is V/Hz, suppose the fourier transform is fairly constant in a certain region, say around 50Hz and has a value 2 N/Hz. Roughly speaking, that tells you that frequency content between, say 40 and 60 Hz is worth 20 x 2 = 40N of response in the time domain.

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

Start Hunting!
## 0 Comments

Sign in to comment.