Storing values in an array

조회 수: 3 (최근 30일)
NC
NC 2018년 6월 19일
댓글: NC 2018년 6월 20일
I want to calculate the distance to each pixel from the center pixel and sort the highest 4 values. I used the following code for that. But it gives the error "Subscript indices must either be real positive integers or logicals". How to solve it?
totalVal = 0;
for h = 1 : H
for w = 1:W
%value = pdist2([cen h],[cen w],'euclidean');
value(h,w) = sqrt((cen-h)^2 + (cen-w)^2);
end
end
f3Row = reshape(value, 1, []);
[sortedDist, sortedInds] = sort(f3Row,'descend');
highestDist = (sortedDist(1:4));
for num = 1:n
totalVal = totalVal+highestDist(num);
end
f3 = totalVal;
fprintf('Feature 03 : ');
disp(f3);
  댓글 수: 2
Jan
Jan 2018년 6월 19일
Please post the error message. It is much easier to fix an error than to guess, what the error is.
NC
NC 2018년 6월 20일
Question was edited with the error message.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2018년 6월 20일
centy = H/2;
centx = W/2;
[Hg, Wg] = ndgrid(1:H, 1:W);
value = sqrt((Hg - centy).^2 + (Wg - centx).^2);
sortedDist = sort(value(:), 'descend');
f3 = sum(sortedDist(1:4));
However, you can predict this value without doing any of this. The value will always be 4 * sqrt(H/2^2 + W/2)^2
Perhaps you are only to consider pixels that meet some particular condition, like belonging to a non-square ROI? And perhaps the center point is not the center of the image but is instead the centroid of the non-square ROI ?
  댓글 수: 5
Walter Roberson
Walter Roberson 2018년 6월 20일
The only way that could have happened there is if you had created your own variable named sum . Do not name your own variable sum .
NC
NC 2018년 6월 20일
Thank you. The problem was resolved by renaming existing sum variable.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by