【问题标题】:loop in each cell array element in matlab在matlab中的每个单元格数组元素中循环
【发布时间】:2016-10-27 16:27:57
【问题描述】:

我没有在 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} 的每一行?

【问题讨论】:

    标签: arrays matlab cell-array


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多