我在Matlab中有一个维数A的矩阵Nx(N-1)。
N=5;
A=[1 2 3 4;
5 6 7 8;
9 10 11 12;
13 14 15 16;
17 18 19 20];我想以某种方式重新排列A的元素。具体来说,我想创建一个维度B的矩阵(N-1)xN,这样:
对于i=1,...,N,
B(:,i)收集
1) i-1第四列的第一个A元素和
2) N-i列的最后一个i元素。
注意,对于i=1,A的i-1第四列不存在,因此跳过了1);类似地,对于i=N,A的i第四列不存在,因此跳过了2)。
在上面的例子中
B=[5 1 2 3 4
9 10 6 7 8
13 14 15 11 12
17 18 19 20 16];这个代码能做我想做的事。我请求你的帮助,以一种有效的方式矢量图。
B=zeros(N-1,N);
for i=1:N
if i>1 && i<N
step1=A(1:i-1,i-1);
step2=A(i+1:N,i);
B(:,i)=[step1;step2];
elseif i==1
B(:,i)=A(i+1:N,i);
elseif i==N
B(:,i)=A(1:i-1,i-1);
end
end发布于 2017-12-07 17:09:26
提取A的上下三角矩阵。然后用“对角线移位”重新组装它们:
u = triu(A);
l = tril(A,-1);
B = padarray(u(1:end-1,:),[0 1],'pre') + padarray(l(2:end,:),[0 1],'post');https://stackoverflow.com/questions/47699321
复制相似问题