0

我正在尝试使用 MATLAB 的编码器工具包来 MEX 一些代码。代码最初包含单元格数组,目前没有由编码器处理,因此我决定使用结构体来弥补这一点。

我的问题是结构的大小不固定,这就是问题所在。我基本上是这样的:

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。

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

4

1 回答 1

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

于 2014-09-18T20:32:49.420 回答