제 문제는 그림에서 점의 거리 계산을 세 개의 정적 점으로 수행했기 때문입니다. 어떤 거리가 가장 작은 지 알고 픽셀의 값을 두 번째 배열에 쓰고 싶습니다. 나는 인덱스를 얻기 위해 min()
을 사용했지만, 그것들을 가지고 그림에 접근하는 방법을 모른다. 나는이는 picture(1:3, 1, 1)
의 나에게 가치를 줄 것이다 알고, 그래서 처음 세 개의 픽셀최소 인덱스 사용
data = rand(5, 5, 3); # distances of a 5x5 image to 3 different points
[~, mi] = min(data, [], 3); # which of the distances is the minimum
result = picture(mi); # write pixel values to result
, 그리고 나는 모든 인덱스를 변환하는 적합한 기능을 발견하지 않았다 : 나는 약간의 코드를 단순화. 어떻게해야 루프를 작성할 수 있습니까?
편집 clearification를 들어
. 당신이 볼 수 있듯이 mi
는 data(1)
및 data(2)
기본적으로 data(1, 1, 1)
및 data(2, 1, 1)
인 나는 그 indecies에 액세스
data = rand(3, 3, 2)
data =
ans(:, :, 1) =
0.316498 0.054937 0.606390
0.537073 0.231184 0.790371
0.770788 0.334282 0.522369
ans(:,:,2) =
0.843369 0.051667 0.227570
0.452298 0.407662 0.648079
0.450546 0.398068 0.281694
[~, mi] = min(data, [], 3)
mi =
1 2 2
2 1 2
2 1 2
data(mi)
ans =
0.31650 0.53707 0.53707
0.53707 0.31650 0.53707
0.53707 0.31650 0.53707
수 있지만, 나는 다음과 같은 결과를
0.31650 0.051667 0.227570
0.452298 0.231184 0.648079
0.450546 0.334282 0.281694
색인을 무엇으로 변환합니까? 당신은 이미 그들과 함께 사진을 다루고 있습니다 ... – excaza
예,하지만 기대했던대로는 아닙니다. 내 질문을 확장했다. – RyanMcFlames
mmm ... '분'의 * 첫 번째 출력을 사용하지 않는 이유는 무엇입니까? 내가 뭘 놓치고 있니? – beaker