"Index exceeds array dimensions. Index value 2 exceeds valid range [1-1] for array" --How to solve this?

109 visualizaciones (últimos 30 días)
Whenever I am trying to update a 2-dimensional array in a loop matlab throws this error!
%% initialized in workspace
s.t(1)=0*0.1;
%% update via a function
for i=1:10 % implemented via simulink counter and increment block
func op= fcn(i)
s.t(i+1)=i*0.1
end
end

Respuesta aceptada

Walter Roberson
Walter Roberson el 21 de Oct. de 2020
In Simulink,
s.t(1)=0*0.1;
defines s.t as being a scalar value that is not permitted to increase in size.
In Simulink, you need to initialize variables to the maximum size they could use. You can reduce the size of the variable later if you need to, but you cannot increase it in size. (See, though, coder.varsize() )
Your code runs to s.t(10+1) so your s.t is length 11. Initialize it as
s.t = zeros(11,1);
  1 comentario
Sunandan Adhikary
Sunandan Adhikary el 22 de Oct. de 2020
Great. This helped. Unlike normally as we do in matlab scripts, while updating the variable in a function, we must let the function know its size as well. So prior initialization of the whole matrix is needed.

Iniciar sesión para comentar.

Más respuestas (1)

Prudhvi Peddagoni
Prudhvi Peddagoni el 21 de Oct. de 2020
Hi,
The error you mentioned occurs when you try to access an array element which is out of it's length.
If you are trying to update s.t array such that s.t(i+1)=i*0.1
s.t(1)=0*0.1;
for i=1:10
s.t(i+1)=i*0.1
end
if not, can you post more information about what you are trying to do
Hope this helps.
  1 comentario
Sunandan Adhikary
Sunandan Adhikary el 21 de Oct. de 2020
Editada: Sunandan Adhikary el 21 de Oct. de 2020
I have done exactly what you mentioned. Running this will return no error. But since this operation happens in a function block in simulink model, that takes value of i as input (I increase i in every sampling period and input to the function block) and the intializations are in different script, I get such error! I have mentioned in the comment how did I implement it. Can uou help?

Iniciar sesión para comentar.

Categorías

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

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by