Matlab 使用矩阵填充列中的所有其他值
我在学习matlab,因为我有空闲时间。 矩阵B是矩阵C长度的一半 我想让矩阵B第一列中的每个值填充矩阵C第一列中的所有其他值 为此,我使用for循环。目前,我用矩阵B列中的最后一个数字填充其他所有值。我需要更改什么Matlab 使用矩阵填充列中的所有其他值,matlab,for-loop,vectorization,Matlab,For Loop,Vectorization,我在学习matlab,因为我有空闲时间。 矩阵B是矩阵C长度的一半 我想让矩阵B第一列中的每个值填充矩阵C第一列中的所有其他值 为此,我使用for循环。目前,我用矩阵B列中的最后一个数字填充其他所有值。我需要更改什么 Z=length(A); X = length(B); C = zeros(size(A); for n = 1:2:Z for m = 1:1:X C(n,1) = B(m,1); end end 您可以使用以下功
Z=length(A);
X = length(B);
C = zeros(size(A);
for n = 1:2:Z
for m = 1:1:X
C(n,1) = B(m,1);
end
end
您可以使用以下功能:
reps = 2;
delta = zeros(reps,1);
B = magic(5);
C = kron(B,delta);
这里的rep
表示每秒的值应该取自B
。但是您也可以通过使用delta=one(reps,1)来复制这些值代码>,或您感兴趣的任何组合,通过修改delta
此外,您可以将delta
的维度更改为行向量,然后可以沿行复制值。或者通过允许
delta成为矩阵,您可以得到更奇特的东西 您可以使用以下功能:
reps = 2;
delta = zeros(reps,1);
B = magic(5);
C = kron(B,delta);
这里的rep
表示每秒的值应该取自B
。但是您也可以通过使用delta=one(reps,1)来复制这些值代码>,或您感兴趣的任何组合,通过修改delta
此外,您可以将delta
的维度更改为行向量,然后可以沿行复制值。或者通过允许
delta成为矩阵,您可以得到更奇特的东西 您可以简单地写下:
B = magic(4); % The small matrix with the values
C = zeros(size(A)*2); % The matrix to fill the values in
C(1:2:end,1) = B(:,1) % populating the matrix
你会得到:
C =
16 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
你可以简单地写下:
B = magic(4); % The small matrix with the values
C = zeros(size(A)*2); % The matrix to fill the values in
C(1:2:end,1) = B(:,1) % populating the matrix
你会得到:
C =
16 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
我得到了我想要的,并节省了我一步下来行使用它来填充第二列。最后,我使用for循环将其他所有值填充为零,以实现我想要的结果。谢谢你给我看这个!是的,这样做您不需要使用任何for循环,即使您不希望这些值为零,您也可以在之后更改它们
C(C==0)=NewValue代码>。我用它来处理我想要的内容,并用它来填充第二列,从而节省了我的时间。最后,我使用for循环将其他所有值填充为零,以实现我想要的结果。谢谢你给我看这个!是的,这样做您不需要使用任何for循环,即使您不希望这些值为零,您也可以在之后更改它们C(C==0)=NewValue代码>。