所以我有这个数组:
ab = 3
cd = 4
array = zeros(ab, cd);
给了我们一个类似的数组:
0 0 0 0
0 0 0 0
0 0 0 0
现在我想用每个值填充某些值。我有两个类,有两个属性,我相互减去。
所以第一行中的第一个条目应该通过以下方式计算:
xxx = class1{1}.property - class2{1}.property
第一行中的第二个条目应填写为:
xxx = class1{1}.property - class2{2}.property
第三项:
xxx = class1{1}.property - class2{3}.property
第二行中的第一个条目应该通过以下方式计算:
xxx = class1{2}.property - class2{1}.property
我试过了:
for cc = 1:ab
for hh = 1:cd
array(cc, hh) = class1{cc}.property - class2{hh}.property
end
end
然而,matlab一直告诉我:"下标分配维度不匹配。" 我明白这个问题意味着什么,但我不知道如何解决它:/
编辑:
数组应如下所示:
(class1{1}.property - class2{1}.property) (class1{1}.property - class2{2}.property)
(class1{2}.property - class2{1}.property) (class1{2}.property - class 2{2}.property)
答案 0 :(得分:1)
正如在评论中所说的,如果没有更多的代码知识就很难知道,但它可能会发生,因为你的一个或多个类属性有多个值。您可以尝试使用以下内容来捕获类属性是否大于1的值。
for cc = 1:ab
for hh = 1:cd
temp = class1{cc}.property - class2{hh}.property;
if length(temp) > 1
keyboard
end
array(cc, hh) = temp;
end
end
答案 1 :(得分:0)
尺寸不匹配错误是由于我向每个数组条目添加了向量(class1.property以及class2.property是向量!)。