MATLAB Coder为struct提供越界错误

时间:2014-09-18 20:12:06

标签: matlab struct mex matlab-coder

我正在尝试使用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。

有没有办法解决这个问题,或者是否存在编码器允许的“单元阵列”结构的另一种解决方案?

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')