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

37 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 21 Okt. 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 Kommentar
Sunandan Adhikary
Sunandan Adhikary am 22 Okt. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Prudhvi Peddagoni
Prudhvi Peddagoni am 21 Okt. 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 Kommentar
Sunandan Adhikary
Sunandan Adhikary am 21 Okt. 2020
Bearbeitet: Sunandan Adhikary am 21 Okt. 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink Functions finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by