在matlab中的每个单元数组元素中循环

时间:2016-10-27 16:27:57

标签: arrays matlab cell-array

我还没有在Matlab中使用过单元格数组并且有疑问。

我有2个单元格数组cl。我希望c有10个维度为10 x 785的矩阵。我想循环遍历c中的每一行矩阵。

例如,我想用另一个向量替换这些行中的每一行。我该怎么办?

以下是我目前的代码

k=10;
c={10};
l={10};
for v=1:10
  c{v}=rand(k,d);  
end
for a=1:10
    l{a}=zeros(k,1);
end
 for s=1 : 10
         for j=1:k
            l{s}=c{s,???}*xn';
         end
  end

在最后一个循环中,我尝试显示cl的哪个单元格。但是,我如何访问c{1}的每一行?

1 个答案:

答案 0 :(得分:1)

单元格引用可以在您使用完整矩阵的任何上下文中使用。因此,为了得到矩阵M的第j行,你可以做正常的M(j,:)。要获取存储在单元格数组c中的矩阵的第j行,请执行c{1}(j,:)

所以在你的情况下,l{s}(j,:) = c{s}(j,:)*xn';

请注意,c={10}没有达到预期效果。您可以说c=cell(1,10),也可以清除c并让它动态构建。

最后,由于每个矩阵的大小相同,因此请考虑使用3d矩阵而不是单元阵列。它会表现得更好,语法会稍微紧凑,你正在做的特定操作将映射到矩阵乘法:

l = zeros(k, 1, 10);
c = rand(k, d, 10);

% Refer to c(:, :, 1) to get the first matrix