比方说,我有一个M x N
矩阵。现在,我想在每个M x 1
列之间插入一个常量N
列向量(比如所有1)。因此,我得到的矩阵将具有维度(M x (2*N-1)
),每隔一列为1。
有一种简单的方法吗?
答案 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);