【问题标题】:How do I get rid of this MATLAB error? "In an assignment A(I) = B, the number of elements in B and I must be the same."如何摆脱这个 MATLAB 错误? “在赋值 A(I) = B 中,B 和 I 中的元素数量必须相同。”
【发布时间】:2013-02-27 10:07:34
【问题描述】:

我不断收到下面的 b 数组的这个错误

A = one(numTrials, 2*numDOFs);
b = 个(numTrials, 1);

k = 2;
for i = 2:numSubjects
    for j = 1:numTrials
        A(k,:) = cat(2,subject(i).trial(j).torque_integral, subject(i).trial(j).work_integral); 
        b(k) = [subject(i).trial(j).E - subject(i).trial(j).B - sum(subject(i).trial(j).work_integral)];        
        k = k + 1;
    end
end

我测试了创建 b 数组的每个组件(subject(i).trial(j).E 等),它们都是标量值。所以我应该能够添加/减去它们,然后将它们分配给预分配的 b 数组中的索引。一个简单的虚拟版本如下所示:

c = 个(4,1)

c =

 1
 1
 1
 1

c(3) = 3

c =

 1
 1
 3
 1

那么我在这里错过了什么?谢谢!

【问题讨论】:

  • 谢谢!我在代码更远的地方有一个不明显的错误,当我修复它时,这个错误消息消失了。有趣的替代答案,我还没有探索过细胞,但是谢谢!

标签: matlab struct indexing


【解决方案1】:

您可能应该打印出分配中每个元素的大小,您的问题将自行解决;

size(cat(2,subject(i).trial(j).torque_integral, subject(i).trial(j).work_integral))
size([subject(i).trial(j).E - subject(i).trial(j).B - sum(subject(i).trial(j).work_integral)])

注意 - 我在上面省略了尾随的;,这会导致值输出到控制台;此外,您对 B 的分配有 [] 围绕它,就好像您正在尝试创建一个向量。如果它真的是一个单一的元素,那就没有必要了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    相关资源
    最近更新 更多