在matlab中的每个单元格数组元素中循环
loop in each cell array element in matlab
我没有在 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}
的每一行?
单元格引用可用于任何需要使用完整矩阵的上下文中。因此,要获得矩阵 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
我没有在 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}
的每一行?
单元格引用可用于任何需要使用完整矩阵的上下文中。因此,要获得矩阵 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