Arrays 从N x 1阵列Matlab创建N x 2阵列
我有一个大小为N(即nx1;N行,1列)的一维数组(比如a)。现在,我想创建一个大小为nx2(N行,2列)的数组,数组A作为一列,另一列使用相同的元素(在下面的给定示例中为0) 例如,如果 我想创建一个矩阵B,它是Arrays 从N x 1阵列Matlab创建N x 2阵列,arrays,matlab,Arrays,Matlab,我有一个大小为N(即nx1;N行,1列)的一维数组(比如a)。现在,我想创建一个大小为nx2(N行,2列)的数组,数组A作为一列,另一列使用相同的元素(在下面的给定示例中为0) 例如,如果 我想创建一个矩阵B,它是 如何在Matlab中执行此操作?您可以将B初始化为一个包含所有零的Nx2数组,然后将第二列指定给A中的值 A = [1;2;3;4;5]; B = zeros(numel(A), 2); B(:,2) = A; % 0 1 % 0 2 % 0
如何在Matlab中执行此操作?您可以将
B
初始化为一个包含所有零的Nx2
数组,然后将第二列指定给A
中的值
A = [1;2;3;4;5];
B = zeros(numel(A), 2);
B(:,2) = A;
% 0 1
% 0 2
% 0 3
% 0 4
% 0 5
如果您实际上只想在第一列中输入零,您甚至不需要初始化B
,因为MATLAB将自动用0填充未知值
% Make sure B isn't already assigned to something
clear B
% Assign the second column of uninitialized variable B to be equal to A
B(:,2) = A;
你也可以滥用一个班轮-
bsxfun(@times,[0,1],A)
或者隐式展开的矩阵乘法-
A*[0,1]
你可以试试这种方法
B=[zeros(length(A),1) A]
喜欢这些方法(+1)@Divakar:我不明白在这种方法中,我应该怎么做才能得到一个非零的值?例如,对于包含22和@SaravanaKumar的列,您可以执行
bsxfun(@plus,a*[0,1],[22,0])
。但为了提高效率,我建议使用@Suever的答案
,用B=22*one初始化(numel(A),2)然后B(:,2)=A代码>。或者只是连接:B=[22*one(numel(A),1)A]
。
A*[0,1]
B=[zeros(length(A),1) A]