RealFFTSampling and FFT of input u |
This information is part of the Modelica Standard Library maintained by the Modelica Association.
This block samples the input signal, calculates the Fast Fourier Transform by function Math.realFFT, and (when simulation terminates) writes the output to result file resultFileName by function Math.realFFTwriteToFile.
The number of sampling points as well as the samplePeriod is calculated from desired maximum frequency f_max and frequency resolution f_res.
The user has to take care that enough points can be sampled before the simulation ends: startTime + (ns - 1)*samplePeriod <= stopTime.
The result file is written as mat, first column = frequency, second column = amplitudes, third column = phases. The frequency points are separated by rows with amplitude and phase = 0, so one can plot the result directly as frequency lines.
samplePeriod |
Value: 1 / (2 * f_res * div(ns, 2)) Type: Time (s) Description: Sample period of component |
---|---|
startTime |
Value: 0 Type: Time (s) Description: First sample time instant |
f_max |
Value: Type: Frequency (Hz) Description: Maximum frequency of interest |
f_res |
Value: Type: Frequency (Hz) Description: Frequency resolution |
ns |
Value: Modelica.Math.FastFourierTransform.realFFTsamplePoints(f_max, f_res, f_max_factor = 5) Type: Integer Description: Number of samples |
nf |
Value: max(1, min(integer(ceil(f_max / f_res)) + 1, div(ns, 2))) Type: Integer Description: Number of frequency points |
resultFileName |
Value: "realFFT.mat" Type: String Description: Result file: f, abs, arg |
sampleTrigger |
Type: Boolean Description: True, if sample time instant |
---|---|
firstTrigger |
Type: Boolean Description: Rising edge signals first sample instant |
info |
Type: Integer Description: Information flag from FFT computation |
u |
Type: RealInput |
---|
Modelica.Blocks.Examples Example of FFT block |
|
Modelica.Blocks.Examples Example of FFT block |