如何将A [(N)x(N)]的矩阵转换为矩阵B [(2N)x(2N)],这样:
if A(i,j)>=0, then:
B(i,j) = [ A(i,j) 0
0 A(i,j)]
if A(i,j)<0, then:
B(i,j) = [ 0 A(i,j)
A(i,j) 0 ]
?
例如:by:
1 2
3 4
我想得到:
1 0 2 0
0 1 0 2
3 0 4 0
0 3 0 4
例如:by:
1 -2
3 -4
我想得到:
1 0 0 2
0 1 2 0
3 0 0 4
0 3 4 0
答案 0 :(得分:3)
B = kron(A.*(A>=0), [1 0; 0 1]) + kron(A.*(A<0), [0 1; 1 0]);
或者
B = kron(A.*(A>=0), [1 0; 0 1]) - kron(A.*(A<0), [0 1; 1 0]);
如果您想要所有正值(您的示例和您的原始配方不同意)
答案 1 :(得分:1)
使用逻辑条件非常简单:
B=[A.*(A>=0), A.*(A<0) ; A.*(A<0), A.*(A>=0)];
例如,
A=[1 2 ; -3 4];
B =
1 2 0 0
0 4 -3 0
0 0 1 2
-3 0 0 4
这个答案是为了回答上面的问题而写的:
How do you translate matrix of A [(N) x (N)] to matrix B [(2N) x (2N)], such that:
if A(i,j)>=0, then:
B(i,j) = [ A(i,j) 0
0 A(i,j)]
if A(i,j)<0, then:
B(i,j) = [ 0 A(i,j)
A(i,j) 0 ]
?
后来,OP写下了一些例子,清楚地说明了他们所追求的是什么。