how do I implement a real time FFT in simulink?
    12 次查看(过去 30 天)
  
       显示 更早的评论
    
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
0 个评论
回答(1 个)
  Mathieu NOE
      
 2025-1-17
        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 个评论
  Walter Roberson
      
      
 2025-1-17
				Perhaps use a https://www.mathworks.com/help/dsp/ref/buffer.html buffer block and an FFT block https://www.mathworks.com/help/dsp/ref/fft.html ?
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Transforms 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!