2013-04-08 8 views
6

저는 Matlab에 익숙하지 않아서이 바보 같은 질문에 대해 미리 사과드립니다. 행렬의 특정 위치에 숫자 1을 지정하고 싶습니다. 행 벡터와 해당 열 벡터가 있습니다. 이 위치에 여러 번 값을 지정하려고했습니다. 그러나 작동하지 않았습니다. 다음은 작은 크기 코드 예제입니다. 4 * 4 행렬이 있다고 가정하고 행렬 (1,1), 행렬 (2,3) 및 행렬 (3,4)을 1로 지정하고 싶습니다. 이것은 내가 한 것입니다.MATLAB에서 행렬의 특정 위치에 값을 할당하는 방법은 무엇입니까?

matrix = zeros(4,4); 
row = [1 2 3]; 
col = [1 3 4]; 
matrix(row,col)=1; 

그러나, 나는 누군가가 내가 잘못 여기에 무엇을 지적 할 수

matrix=[ 1 0 1 1 
     1 0 1 1 
     1 0 1 1 
     0 0 0 0]  

로 대답을 얻었다? 작업 할 행렬의 실제 크기는 수천에 지나지 않으므로 수동으로 그 위치를 하나씩 지정할 수 없습니다. 행 벡터와 열 벡터를 사용할 방법이 있습니까? 값 1을 할당해야합니까?

+2

유용 할 수 있습니다. http://stackoverflow.com/questions/6850368/how-can-i-change-the-values-of-multiple-points-in-a-matri x? rq = 1 –

+0

고맙습니다. 나는 그 게시물을 확인했고 그것은 매우 도움이된다. – Cassie

답변

8

당신은 당신이 할당들을 할당하고 사용하려는 위치의 선형 지수를 계산하는 sub2ind를 사용할 수있는, 대단히 감사합니다 :

indices = sub2ind(size(matrix), row, col); 
matrix(indices) = 1; 
+0

대단히 감사합니다. 그것은 효과가있다! – Cassie

1
matrix(1,1) = 1 
matrix(2,3) = 1 
matrix(3,4) = 1 
+2

답장을 보내 주셔서 대단히 감사합니다. 그러나, 내 매트릭스의 실제 크기는 수천입니다. 하나씩 지정할 수는 없습니다. 그래서 어쨌든 나는 행 벡터와 열 벡터를 사용 하는가? 감사합니다 – Cassie

1

범프의 비트. 당신은 꽤 많은 인접하지 않은 행 또는 열을 수행하지 않는 한 그것은 아주 쉽게

요소 수학을 지원

matrix(1:3,2:4)=1 

처럼 매우 유용한 방법이

{0 1 1 1} 
{0 1 1 1} 
{0 1 1 1} 
{0 0 0 0} 

{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 

을 돌려 것입니다

관련 문제