在Matlab中使用嵌套for循环从数据结构中提取结果时出错。为什么呢?

时间:2017-03-15 11:40:27

标签: matlab for-loop

function result = results() 
i = [1,5];
    for repeats = 1:1:7
        ratio_counter = 1;
        for ratio = i
            [a,~] = main(75,100,ratio,1000);
            output(repeats) = a.food;
            tabled_output(ratio_counter,repeats) = output
            ratio_counter = ratio_counter + 1;
        end
    end
    result = tabled_output
end

尝试获得7组重复结果,但收到以下错误:

Assignment has more non-singleton rhs dimensions than non-singleton
    subscripts

Error in results (line 16)
            tabled_output(ratio_counter,repeats) = output

我做错了什么?

1 个答案:

答案 0 :(得分:2)

作为一般提示,您可以使用matlab GUI界面逐行通过代码来调试这样的东西。 (单击代码行旁边的短划线以设置断点)。

您的具体问题似乎是

output(repeats) = a.food;

这会创建output(1)(与a.food相同的维度),然后在下一个循环中追加output(2),创建一些更大的矩阵对象。

此扩展output对象的后果是

tabled_output(ratio_counter,repeats) = output

变得胡说八道。 LHS需要一个特定大小的物体,你需要一个更大的物体。

这可以通过

修复
tabled_output(ratio_counter,repeats) = output(repeats);

output = a.food;

取决于您的总体要求。后者的内存效率更高