我正在尝试使用MATLAB的编码器工具包来修改一些代码。代码最初有单元格数组,目前编码器没有处理,所以我决定使用结构来补偿。
我的问题是结构的大小不固定,这就是问题所在。我的本质是这个:
Temp= struct('a',"some variable");
for i = 2:x
Temp(j).('a') = Temp(i-1).('a')*Temp(1).('a');
end
在MATLAB的命令窗口中,这是完全可以接受的,但是在尝试构建MEX文件时,会抛出此错误:
索引表达式超出范围。尝试访问元素2.有效范围为1-1。
有没有办法解决这个问题,或者是否存在编码器允许的“单元阵列”结构的另一种解决方案?
答案 0 :(得分:2)
您可以使用repmat
:
MyStruct = repmat(Temp,1,N);
其中N
是常数(即硬编码,不依赖于数据)
然后,如果你愿意,
for i=2:N
MyStruct(i).a = MyStruct(i-1).a*MyStruct(1).a;
end
无需MyStruct(i).('a')