how to solve error Index exceeds matrix dimensions. The array locs is empty and therefore has no valid indices.
Mostrar comentarios más antiguos
hello everyone, I have an array of frequency domain fft on simulink of [11x501] and I want to enter into the matlab function block containing the findpeaks code but then the error appears above, what should I do if maybe I need to change the leading zeros to another number? But it can't be a constant or monotonous number, is it possible that someone should know how to duplicate another array to fill in the leading zero?
I have tried to delete it but then an error appeared, namely unable to delete element in this array because this array has fixed size.
is there someone who can provide help? thank you for your attention

Respuestas (1)
Walter Roberson
el 7 de En. de 2021
u(1,:) = -u(2,:)
unless the second row is 0.
If the second row is 0 then you need to scan down the column to determine whether there is any non-zero. If not then set the first row to 1 to force it to be a peak.
But really since you are looping the findpeaks just test to see whether the findpeaks is empty and if so arbitrarily designate one of the positions as a peak.
11 comentarios
Naufal Arfani
el 7 de En. de 2021
Walter Roberson
el 7 de En. de 2021
Those are not times, those are frequency domain fft results. It looks like they are single-sided and absolute value only.
Just take the second output of max() to get the bin number.
Naufal Arfani
el 8 de En. de 2021
Naufal Arfani
el 8 de En. de 2021
Walter Roberson
el 8 de En. de 2021
To get the model to work, I had to switch the sine source from continuous to discrete.
Naufal Arfani
el 9 de En. de 2021
Walter Roberson
el 9 de En. de 2021
The buffer is not causing output of 0. If you put a scope on the output of the DSP.sin then the output is already 0 if you are in continuous mode.
Naufal Arfani
el 9 de En. de 2021
Walter Roberson
el 9 de En. de 2021
The DSP Buffer block is defined to hold the previous content until enough new samples have been received to fill a complete frame, at which point the output changes to the appropriate number of previous values.
Between the time the buffer operation starts and the time a full frame of samples have been received, the "previous content" is typically 0. You can configure for a different initial value in the properties of the DSP Buffer block, which also permits you to name a variable to receive the initial values from.
Walter Roberson
el 9 de En. de 2021
... You would not be continuing to have this problem if you had followed my advice,
" just test to see whether the findpeaks is empty and if so arbitrarily designate one of the positions as a peak."
Naufal Arfani
el 10 de En. de 2021
Categorías
Más información sobre Signal Operations en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!