2017-12-28 71 views
1

특정 행 인덱스에 기존 행렬에 같은 번호의 벡터를 반복적으로 입력하고 싶습니다. 이것은 모든 논리적 색인 위치 (적어도 내 머리 부분)에서 단 하나의 숫자를 입력하는 것과 같습니다.Matlab : 논리 인덱스를 사용하여 행렬에 동일한 벡터를 반복적으로 입력하십시오.

즉,

mat = zeros(5,3); 
rowInd = logical([0 1 0 0 1]); %normally obtained from previous operation 

mat(rowInd,1) = 15; 
mat = 

    0  0  0 
    15  0  0 
    0  0  0 
    0  0  0 
    15  0  0 

을 가질 수 있습니다하지만이

mat(rowInd,:) = [15 6 3]; %rows 2 and 5 should be filled with these numbers 

같은 STH을하고 할당 불일치 오류를 좀하고 싶습니다.

행에 대한 루프 또는 벡터 요소 하나의 파일 할당을 피하고 싶습니다. 나는이 일을 할 수 있어야 초등 matlab 작업이 강한 느낌이 있어요? 감사!

+0

하지만이'mat' 항상 영 행렬 아닌가요? 그렇지 않으면 : a = [15 6 3], mat = rowInd (:). * a (:). ';' – thewaywewalk

답변

2

색인을 생성하면 행렬에서 두 행을 선택하여 한 행을 할당하려고합니다. 당신은 당신의 색인에 맞게 대상 행을 복제 할 수 있습니다

mat = zeros(5,3); 
rowInd = logical([0 1 0 0 1]); 
mat(rowInd,:) = repmat([15 6 3],sum(rowInd),1) 

이 반환

mat = 

    0  0  0 
    15  6  3 
    0  0  0 
    0  0  0 
    15  6  3 
+0

고마워! 나는 어떻게 든 단일 숫자의 경우와 비슷한 방법이 있어야한다고 생각했지만 지금은 이것이 다른 시나리오임을 알 수 있습니다. – accordeon