我还没有在Matlab中使用过单元格数组并且有疑问。
我有2个单元格数组c
和l
。我希望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
在最后一个循环中,我尝试显示c
和l
的哪个单元格。但是,我如何访问c{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