"Index exceeds array dimensions. Index value 2 exceeds valid range [1-1] for array" --How to solve this?
37 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Walter Roberson
2020-10-21
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 个)
Prudhvi Peddagoni
2020-10-21
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Simulink Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!