how do I implement a real time FFT in simulink?

17 visualizaciones (últimos 30 días)
Bastian Kindereit
Bastian Kindereit el 17 de En. de 2025
Comentada: Walter Roberson el 17 de En. de 2025
I need to implement a real time FFT of the signal in the attached simulink model in order to detect the frequency and phase of the highest peak (it's a single sinusoid, so it shouldn't be an issue). As you can see, I've set the simulation step to 1/48000. I would like the detection update rate to be 40Hz, so the FFT is run 40 times a second. I'd like the FFT to be run on the newest samples (i.e. 48000/40) plus an overlap of 50% of the previous set (48000/80), so in other words, the latest 1800 samples. I'd like to zero pad this up to the next power of 2.
I was trying to figure out how to do a FIFO buffer that saves the last 1800 samples, but I couldn't figure that out, and I couldn't advance past that stage.
In case it helps, here's what I have:
Simulink Version 24.2 (R2024b)
Control System Toolbox Version 24.2 (R2024b)
DSP System Toolbox Version 24.2 (R2024b)
Optimization Toolbox Version 24.2 (R2024b)
Signal Processing Toolbox Version 24.2 (R2024b)
Stateflow Version 24.2 (R2024b)
Statistics and Machine Learning Toolbox Version 24.2 (R2024b)
Thanks in advance
-Bastian

Respuestas (1)

Mathieu NOE
Mathieu NOE el 17 de En. de 2025
hello
why not simply use a counter to do the job ? (as we deal with a sinusoidal wave)
you need one counter for the frequency and another one to compute the phase vs a reference signal
doing a full fft for just one single frequency is bit of overkill in my eyes ...
attached a demo file
hope it helps !
  7 comentarios
Bastian Kindereit
Bastian Kindereit el 17 de En. de 2025
I went to the Configuration Parameters under Model Settings, and changed it to Type: Fixed-step and Solver: Discrete and set the Fixed Step Size (see attachment). Get this error: Error:The "FixedStepDiscrete" solver cannot be used to simulate block diagram 'tachlessSim' because it contains continuous states
However, I'm not worried about that. I would like to know how I implement an 1800 element FIFO buffer and run the FFT on that 40 times a second.
Thanks

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by