need to find local maxima and minima of each row of a 7886 * 321 matrix stored in xlsx file.

1 vue (au cours des 30 derniers jours)
filename = 'filtereddata.xlsx';
data = xlsread(filename);
Diff1= diff(data,1,2);
[rows, columns] = size(data);
extrema = zeros(7886,321);
for i=1:rows
[Diff1max,imax1,Diff1min,imin1] = extrema(Diff1(i,:));
end
Error: Insufficient number of outputs from right hand side of equal sign to satisfy assignment.

Réponse acceptée

Voss
Voss le 1 Mai 2022
extrema is a 7886-by-321 matrix of zeros, so this expression:
extrema(Diff1(i,:))
says to get the elements of extrema at the indices given by Diff1(i,:). Those elements will be in a single matrix, so trying to assign them to the four variables Diff1max,imax1,Diff1min,imin1 is what causes the error.
I suspect you intend to use the function extrema from the File Exchange (https://www.mathworks.com/matlabcentral/fileexchange/12275-extrema-m-extrema2-m), in which case you should avoid naming a variable the same name as that function. Use another name for the variable extrema, say my_extrema, if you need that variable (which it's not clear whether you do).
my_extrema = zeros(7886,321); % variable
for i=1:rows
[Diff1max,imax1,Diff1min,imin1] = extrema(Diff1(i,:)); % function call
% do something with the outputs from extrema function
% Diff1max,imax1,Diff1min,imin1
end
  6 commentaires
NotA_Programmer
NotA_Programmer le 1 Mai 2022
"One way to handle such a situation is to use cell arrays:"
- Yes, this worked.
Thanks a lot!!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Identification dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by