For loop get an error of "size of the right side is 0-by-1"

13 visualizaciones (últimos 30 días)
Nao
Nao el 12 de Nov. de 2022
Comentada: Nao el 12 de Nov. de 2022
Hi.
I have 2 sets of vectors B and C, both 79x1, and want to extract the max point (peak) between the corresponding rows of B and C. Here is the code I have so far:
peak = B
for i = 1:length(B)
peak(i,1) = max(A(B(i,1):C(1,1)));
end
But this gets an error of "Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 0-by-1".
I have another data set and the above code worked perfectly fine for it. Moreover, when it's taken out of the for loop and I specify a number for "i" for example:
peak(1,1) = max(A(B(1,1):C(1,1)))
This runs without a problem.
Can someone please help me identify the issue? Thank you in advance!

Respuesta aceptada

KSSV
KSSV el 12 de Nov. de 2022
peak = B
for i = 1:length(B)
c = A(B(i,1):C(1,1)) ;
if ~isempty(c)
peak(i,1) = max(c);
end
end
  3 comentarios
KSSV
KSSV el 12 de Nov. de 2022
Sometimes the right side is empty. So you cannot assign a empty matrix as an element to in an initialised array. Anyways what you are trying is not a good coding practise.
Nao
Nao el 12 de Nov. de 2022
Ok I understand now. I've still got a lot to learn, thank you for your help!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by