2017-12-29 7 views
1

행 인덱스가 벡터에 저장되는 행렬의 각 행에서 다른 열을 업데이트하는 방법이 있습니까?업데이트 행렬, 행 인덱스가 vecor 인 행당 단일 열

mx = zeros(10,10); 
cols = [2 3 5 4 6 8 9 1 2 3]'; 
for i = 1:size(mx,1) 
    mx(i,cols(i)) = 1; 
end 
mx 

내가 for 루프없이 그것을 할 수 있는지 여부,

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

질문은 생산?

+0

[행 및 열 인덱스 벡터에 기초하여 새로운 매트릭스 값을 할당] 가능 중복 (https://stackoverflow.com/questions/33760043/assign-new-matrix-values-based-on-row-and -column-index-vectors) – ederag

답변

2

하나의 숫자가있는 행렬의 요소를 지정할 수 있습니다. 이 경우 요소는 열 방향으로 번호가 매겨집니다 (1-10은 첫 번째 열, 11-20은 초 ...). 요소 번호를 계산하는 함수는 sub2ind입니다. 귀하의 경우에는 꽤 쉽게, 10x10 때문에 수동으로 할 수 있지만 여전히 기능을 권하고 싶습니다.

mx = zeros(10,10); 
rows = 1:size(mx,1); %create the row indices 
cols = [2 3 5 4 6 8 9 1 2 3]; 
X=sub2ind(size(mx),rows,cols) 
mx(X)=1; 
mx 
+0

감사합니다. sub2ind는 제가 찾고있는 것입니다. 실제 행렬은 물론 10x10보다 훨씬 큽니다. –

관련 문제