2016-06-08 74 views
2

我有一個大小爲N(即N×1; N行,1列)的一維數組(例如A)。現在我想創建一個大小爲N x 2(N行,2列)的數組,其數組A爲一列,另一列爲相同元素(下面給出示例中爲0)。從N×1陣列創建N×2陣列-Matlab

對於e.g如果

A =[1;2;3;4;5]; 

我想創建一個矩陣B是

B=[0 1; 0 2; 0 3; 0 4; 0 5] 

如何在Matlab中做到這一點?

回答

6

您可以將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; 
8

您也可以濫用bsxfun爲一襯墊 -

bsxfun(@times,[0,1],A) 

或矩陣乘法對於隱式膨脹 -

A*[0,1] 
+3

愛這些方法(+1) – Suever

+0

@Divakar:我沒有在這個方法我應該怎麼做才能爲非零值,明白了嗎?例如,包含22的列和A. – Rhinocerotidae

+1

@SaravanaKumar您可以執行'bsxfun(@ plus,A * [0,1],[22,0])'。但爲了提高效率,我建議用'B = 22 * ones(numel(A),2);'和B(:,2)= A;'來初始化'@ Suever的答案'。或者只是連接:'B = [22 * ones(numel(A),1)A]'。 – Divakar

0

你可以試試這個方法

B=[zeros(length(A),1) A]