matlab를 처음 사용했습니다. 나는 배열을 가지고 있는데, 행렬에 min 요소를 찾고 행렬의 해당 행과 열을 1로 만듭니다. 첫 번째 루프에서는 완벽하게 작동하지만 다음 루프에서는 행렬이 업데이트되지 않습니다.Matlab : 루프에서 업데이트되지 않는 행렬
코드 :
data=[1.00000000 0.53137106 0.85595882 0.66829640 0.23856533 0.45405844 0.54347968 0.56774586 0.23837982 0.62409687;
0.53137106 1.00000000 0.28491443 0.83557534 0.58327866 0.53124779 0.18295255 0.30800611 0.88819402 0.82852000 ;
0.85595882 0.28491443 1.00000000 0.88712496 0.53283900 0.93776625 0.18187943 0.25401449 0.46880579 0.86628407 ;
0.66829640 0.83557534 0.88712496 1.00000000 0.73516506 0.32148027 0.87524909 0.85505933 0.72357458 0.09848434 ;
0.23856533 0.58327866 0.53283900 0.73516506 1.00000000 0.70343286 0.51693362 0.51673573 0.27955368 0.72713149 ;
0.45405844 0.53124779 0.93776625 0.32148027 0.70343286 1.00000000 0.68939388 0.84967077 0.40466678 0.31867197 ;
0.54347968 0.18295255 0.18187943 0.87524909 0.51693362 0.68939388 1.00000000 0.21098818 0.86957568 0.86703879 ;
0.56774586 0.30800611 0.25401449 0.85505933 0.51673573 0.84967077 0.21098818 1.00000000 0.79130369 0.81940556 ;
0.23837982 0.88819402 0.46880579 0.72357458 0.27955368 0.40466678 0.86957568 0.79130369 1.00000000 0.88794363 ;
0.62409687 0.82852000 0.86628407 0.09848434 0.72713149 0.31867197 0.86703879 0.81940556 0.88794363 1.00000000 ];
ptr=1;
for k= 1:9
k
%find min ele, its row and column no:
[minNumRow, minIndexRow] = min(data);
[minNum, row] = min(minNumRow);
col = minIndexCol(row);
row
col
minNum
%storing it in cluster array
cluster{ptr}={strcat(int2str(row),', ',int2str(col))};
ptr=ptr+1;
%make eles of merged objects as 1
for i=1:10
data(row)=1;
row=row+10;
end
for i= ((col*10)-10): (col*10)
data(i)=1;
end
data
end
도와주세요! 나는 바로 그것을 가지고있는 경우
또한 데이터에서 최소값 (0.0985)이 두 번 존재 함을 유의하십시오. 주어진 답은 둘 다 셀 (10,4)에서 발생을 발견 할 뿐이지 만 (4,10)에도 있습니다. 당신도 그 일을 돌보고 싶습니까? 아니면 충분합니까? –
@ SebastianHöffner, 좋은 지적입니다. 감사. – Rashid
예 0.0985가 두 번 나타납니다. min 요소를 한 번만 찾고 두 번째 요소는 행/열을 행렬에서 제거해야합니다. – nikhilk