2012-06-21 1 views
0

나는 (1:10), < 10 x 1> double 인 행렬 (a)을가집니다. 값을 복사하여 다른 행렬 var에 현명한 열을 재배치하고 싶습니다. (비). 아래 예를 참조하십시오. 또한이 작업에서 가장 효과적인 방법은 무엇입니까?매트릭스의 효율적인 복사 MATLAB

matrix a matrix b 

1   1 
2   2 2 
3   3 3 3 
4   4 4 4 4 
5   5 5 5 5 5 
6   6 6 6 6 6 6 
7   7 7 7 7 7 7 7 
8   8 8 8 8 8 8 8 8 
9   9 9 9 9 9 9 9 9 9 
10   10 10 10 10 10 10 10 10 10 10 

업데이트 : 안녕하세요. Amro. 복사 할 값을 정의하고 싶습니다. 예를 들어 아래를 참조

matrix a matrix b 
column:  1 2 3 4 5 6 7 

1   1 
2   2 2 
3    3 3 
4     4 
5      5 
6      6  
7      7 
8      8  
9       9 
10       10 10 

답변

2

시도 :

>> a = (1:10)' 
a = 
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 
    10 

>> b = tril(repmat(a,1,10)) 
b = 
    1  0  0  0  0  0  0  0  0  0 
    2  2  0  0  0  0  0  0  0  0 
    3  3  3  0  0  0  0  0  0  0 
    4  4  4  4  0  0  0  0  0  0 
    5  5  5  5  5  0  0  0  0  0 
    6  6  6  6  6  6  0  0  0  0 
    7  7  7  7  7  7  7  0  0  0 
    8  8  8  8  8  8  8  8  0  0 
    9  9  9  9  9  9  9  9  9  0 
    10 10 10 10 10 10 10 10 10 10 
+0

안녕하세요 amro 당신은 내 업데이트 된 쿼리를 볼 수 있습니다. – Buntalan

+0

@BernardUntalanJr .: 새 사양이 완전하지 않은 것 같습니다. 복사 할 값을 어떻게 정의합니까? – Amro

+0

나는 asinine 오류를 만들었습니다. 어쨌든, user1434725는 솔루션을 제공했습니다. 내 질문의 첫 번째 부분에 대한 해결책을 주셔서 감사합니다. 제공 한 솔루션에 관한 – Buntalan

1

난 당신이 실수를 지정된 두 번째 행렬 생각합니다. 난 당신이 이런 식으로 뭔가를하고 싶었 겠지 :

b = 

1  0  0  0  0  0 
2  2  0  0  0  0 
0  3  3  0  0  0 
0  0  4  4  0  0 
0  0  0  5  5  0 
0  0  0  0  6  6 

이 할 간단하다 :

%define vector of arbitrary length 
a=1:6; 
%generate b with shifted diagonal matrices 
b=diag(a)+diag(a(2:end),-1); 

DIAG의 두 번째 인수는 결과 대각선 이동합니다.

+0

실제로 실수로 실수를했습니다. 답변 해줘서 고마워! – Buntalan