2011-09-26 2 views
0

옥타브에서 간단한 선형 맵을 생성하는 쉬운 방법을 찾고 있습니다. 모든 행렬 B 위해 (치수 N의 양) 우리는 방정식있다 :
sigma(n) * kron(A,B) = kron(B,A) * sigma(n)"교환"맵을 생성하는 방법 a.k.a. "스왑"맵

를 들어 I 필요한 매트릭스는, 시그마 (N) 다음 속성에 의해 정의된다 호출 예 :
sigma(2) = [1,0,0,0; 0,0,1,0; 0,1,0,0; 0,0,0,1].

sigma(n)에 대한 간단한 기능이 있습니까?

제 목적을 위해 n은 상당히 작고 50 미만이므로 효율은 중요하지 않습니다.

편집 : 이제 올바른 정의하는 방정식

답변

1

나는 그것이 자신의 질문에 대답 나쁜 형태의 실현,하지만 머리의 작은 양의 I 명시 적으로 행렬을 생성하기 위해 관리 스크래칭 : 사람이 할 수있는 깔끔한 방법이 있다면

function sig = sigma_(n) 
    sig = zeros(n^2,n^2); 
    for i = 0:(n-1) 
    for j = 0:(n-1) 
     sig(i*n + j + 1, i+ (j*n) + 1) = 1; 
    endfor 
    endfor 
endfunction 

, 나는 '을 아직도 관심이 있어요.

+0

+1 - 자신의 질문에 대답하는 것이 틀림 없습니다. 답변을 제공 한 사람들에게 감사의 말을 전하십시오. 또한 체크 표시로 답을 표시하십시오. –

0

흥미로운 질문!

나는 당신이 요구하는 것이 정확하게 가능하다고 생각하지 않습니다. 그러나, 두 맞췄다 제품, 즉 순열 행렬을 통해 유사 하나 가지고

kron(A,B) = P kron(B,A) P^{-1} 

이 순열 행렬 Px의 값을 행함으로써 행렬 행 (X)를 넣고, 그리고 적층함으로써 얻어 지도록 인 결과 행렬의 열.

당신이 요구하는 증거는 불가능합니다. 마지막 두 개의 열이 제로에 남아있을 것입니다 그래서 :

1 1 0 0  1 0 1 0 
1 1 0 0  0 0 0 0 
0 0 0 0  1 0 1 0 
0 0 0 0  0 0 0 0 

당신이 어떤 매트릭스 시그마는 에 의해 왼쪽의 첫 번째 행렬을 곱한다고 가정 행렬

A = 1 1  B = 1 0 
    1 1   0 0 

그런 다음 두 크로네 커 제품은 고려 결과 이 두 x0 행렬과 같을 수 없습니다. QED.

+0

필수 매트릭스가 존재한다는 것은 (완전히 일반적인 이유로) 올바른 색인 생성 방식을 사용하면 적어두기가 쉽습니다. 여러분이 암시 하듯이, 그것은 순열 행렬입니다. 내 질문은 옥타브가 매트릭스를 명시 적으로 생성하도록하는 간단한 함수를 작성하는 방법이었습니다. –

+0

얼마나 당황 스럽습니까? 당신은 꽤 정확합니다. 내 실수는 질문에 대한 것이었다. 필요한 속성은 위에서 설명한대로'sig * kron (A, B) = kron (B, A) * sig'이다. 나는 고칠 것이다. –

관련 문제