Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用矩阵填充列中的所有其他值_Matlab_For Loop_Vectorization - Fatal编程技术网

Matlab 使用矩阵填充列中的所有其他值

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 您可以使用以下功

我在学习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
您可以使用以下功能:

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