在数组中的某些位置写入值

时间:2014-08-05 16:48:58

标签: arrays matlab

所以我有这个数组:

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)  

2 个答案:

答案 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是向量!)。