在每隔一列之间插入一个常量数组

时间:2013-12-04 01:43:00

标签: arrays matlab matrix insert

比方说,我有一个M x N矩阵。现在,我想在每个M x 1列之间插入一个常量N列向量(比如所有1)。因此,我得到的矩阵将具有维度(M x (2*N-1)),每隔一列为1。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:2)

垂直连接一个矩阵,重新整形,并切掉最后一列。对于矩阵A

B = reshape([A; ones(size(A))],size(A,1),[]);
B(:,end)=[]

答案 1 :(得分:2)

这是另一种方法,使用分配中越界索引的可能性:

M(:,1:2:end*2)=M;
M(:,2:2:end)=1

答案 2 :(得分:1)

如果您不介意创建临时矩阵,一种方法是执行以下操作:

old_matrix = rand(M,N); % Just for example
new_matrix = ones(M,2*N-1);
new_matrix(:,1:2:end) = old_matrix;

请注意,对于任意常量矩阵,您可以使用以下内容替换第二行:

new_matrix = repmat(const_array,1,2*N-1);