# FFT to compute Strouhal number under Matlab

 Register Blogs Members List Search Today's Posts Mark Forums Read

 September 22, 2018, 08:40 FFT to compute Strouhal number under Matlab #1 New Member   hraf5 Join Date: Mar 2018 Posts: 8 Rep Power: 7 Hi every one, I am working on the numerical simulation of the wake around a 2d cylinder. For now I am trying to calculate the Strouhal number: St = D * f / U. So, I need to do a FFT spectral analysis under Matlab of the lift coefficient Cl to calculate the fundamental frequency f. If anyone can help me with a Matlab code to do this task. Thank you.

 September 23, 2018, 18:59 FFT and more #2 Member   Peter Brady Join Date: Apr 2014 Location: Sydney, NSW, Australia Posts: 54 Rep Power: 10 Hi, The following example will walk you through. It is from the signal processing toolbox but the fft command should (I think) be in base MATLAB. I have the SP toolbox. https://au.mathworks.com/help/signal...using-fft.html Have taken into account the Nyquist frequency when setting up your transient simulation? I always do a sanity check on my data first to check for start up transients to see if they've faded and if there are any anomolous points. It can also be good to resample if you are using adaptive timesteps so you data is at non-uniform sample frequencies. It can also be good to look at decay rates at the higher frequencies as well as cutoff frequencies relative to the grid scale and turbulence model. There are some fundamental physics at these frequencies that, depending on your turbulence model, are either ignored or attempted to be simulated. Hope that helps, -pete EL OMARI Achraf likes this.

 September 24, 2018, 17:16 #3 Senior Member   Lucky Join Date: Apr 2011 Location: Orlando, FL USA Posts: 5,149 Rep Power: 61 If your sampling frequency is fs and x is your lift coefficient. Then the code can be as simple as: Code: ```X=2*fft(x)/length(x); fl=linspace(0,fs,length(X)); plot(fl,abs(X));``` You can do things like removing the mean also. pbrady2013 and EL OMARI Achraf like this.

September 25, 2018, 06:08
#4
New Member

hraf5
Join Date: Mar 2018
Posts: 8
Rep Power: 7
Quote:
 Originally Posted by LuckyTran If your sampling frequency is fs and x is your lift coefficient. Then the code can be as simple as: Code: ```X=2*fft(x)/length(x); fl=linspace(0,fs,length(X)); plot(fl,abs(X));``` You can do things like removing the mean also.

Thank you very much LuckyTran.
I still have one question: how can I calculate the fundamental frequency?

September 25, 2018, 06:10
#5
New Member

hraf5
Join Date: Mar 2018
Posts: 8
Rep Power: 7
Quote:
 Originally Posted by pbrady2013 Hi, The following example will walk you through. It is from the signal processing toolbox but the fft command should (I think) be in base MATLAB. I have the SP toolbox. https://au.mathworks.com/help/signal...using-fft.html Have taken into account the Nyquist frequency when setting up your transient simulation? I always do a sanity check on my data first to check for start up transients to see if they've faded and if there are any anomolous points. It can also be good to resample if you are using adaptive timesteps so you data is at non-uniform sample frequencies. It can also be good to look at decay rates at the higher frequencies as well as cutoff frequencies relative to the grid scale and turbulence model. There are some fundamental physics at these frequencies that, depending on your turbulence model, are either ignored or attempted to be simulated. Hope that helps, -pete

September 25, 2018, 06:18
Fundamental Frequencies
#6
Member

Join Date: Apr 2014
Location: Sydney, NSW, Australia
Posts: 54
Rep Power: 10
Hi,

Both of these methods will generate some form of power spectral density. See attached for an example. The fundamental frequency, and any harmonics, will stand out as an isolated peak realtive to the turbulence noise within the system.

In the example attached we have periodic sheddding off a square cylinder in cross flow.

Cheers,
-pete
Attached Images
 exampleSR.jpg (73.4 KB, 90 views)

 September 25, 2018, 12:12 #7 Senior Member   Filippo Maria Denaro Join Date: Jul 2010 Posts: 6,293 Rep Power: 67 Being careful to the use of the windowing in the FFT, you have a time-signal that is not periodic in time EL OMARI Achraf likes this.

September 28, 2018, 09:41
#8
Senior Member

Lucky
Join Date: Apr 2011
Location: Orlando, FL USA
Posts: 5,149
Rep Power: 61
Quote:
 Originally Posted by EL OMARI Achraf Thank you very much LuckyTran. I still have one question: how can I calculate the fundamental frequency?

It is mostly an art. You will probably end up with a very messy plot and hopefully you find one or more peaks. Hopefully you have a good guess beforehand what the fundamental frequency is and can correlate it to the peak in the plot. The fft and its plot is more for confirmation rather than a recipe where you bake a fundamental frequency. (un)fortunately that is how real life works.

Just look at peter's example above. It takes some experience to say, ah-hah that is the peak I want!

 September 28, 2018, 11:11 #9 Senior Member   Filippo Maria Denaro Join Date: Jul 2010 Posts: 6,293 Rep Power: 67 Understanding the fundamental frequency is somehow related to the coherence of the associated vortical structure that generate it. If you have a long time-signal, it could be subdiveded in several regions (windows) and you can perform for each the FFT. Of course the problem is encountered with the "exact" periodicity of the windows. Spectral analysis of non-periodical signal requires care. However, you can do an ensemble averaging of the FFT and get a smooth spectra where the peak is highlighted better. pbrady2013 and EL OMARI Achraf like this.

September 20, 2020, 03:14
Doubt
#10
Member

Mayank
Join Date: May 2019
Location: India
Posts: 30
Rep Power: 5
Quote:
 Originally Posted by LuckyTran If your sampling frequency is fs and x is your lift coefficient. Then the code can be as simple as: Code: ```X=2*fft(x)/length(x); fl=linspace(0,fs,length(X)); plot(fl,abs(X));``` You can do things like removing the mean also.
Can you please tell that why you have multipled with 2 in X = 2*fft(x)/length(x)

September 20, 2020, 04:59
#11
Senior Member

MA
Join Date: Mar 2020
Posts: 163
Rep Power: 5
Quote:
 Originally Posted by May19 Can you please tell that why you have multipled with 2 in X = 2*fft(x)/length(x)

https://dsp.stackexchange.com/questi...when-using-fft

 Tags fft, lift coefficient, matlab code, spectral analysis, strouhal number