fftshift implementation in Simulink

I need to generate IPs for HDL implementation of an algorithm. I need to do fftshift in simulink but there is no fftshift block avaiable. Is there any way we can do fftshift of the output data from FFT block from DSP HDL toolbox? I am attaching FFT model for reference.

 Réponse acceptée

Walter Roberson
Walter Roberson le 23 Jan 2025

0 votes

Fork the fft output. Use https://www.mathworks.com/help/dsp/ref/variableselector.html variable selector block on each of the branches, with Fixed selector. In one of the branches select 1:floor(signal_length)/2 and in the other branch select floor(signal_length)/2+1:signal_length . Now concatenate those two together in reverse order.
This potentially requires hard-coding the signal length.

3 commentaires

This approach doesn't work for odd signal_length assuming the intent is floor(signal_length/2) (not floor(signal_length)/2)
x = 1:9;
signal_length = numel(x);
fftshift(x)
ans = 1×9
6 7 8 9 1 2 3 4 5
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
[x(floor(signal_length/2)+1:signal_length), x(1:floor(signal_length/2))]
ans = 1×9
5 6 7 8 9 1 2 3 4
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
good point
x = 1:9;
signal_length = numel(x);
fftshift(x)
ans = 1×9
6 7 8 9 1 2 3 4 5
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
[x(ceil(signal_length/2)+1:signal_length), x(1:ceil(signal_length/2))]
ans = 1×9
6 7 8 9 1 2 3 4 5
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Paul
Paul le 24 Jan 2025
I just realized that this block requires the FFT length to be a power of 2, so the ceil() isn't necessary for this particular use case.

Connectez-vous pour commenter.

Plus de réponses (1)

Paul
Paul le 23 Jan 2025
Modifié(e) : Paul le 23 Jan 2025

0 votes

fftshift is extended to code generation. Assuming the data output from the FFT block is in linear order, you can call fftshift from inside a MatlabFunction block.

Produits

Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by