Storing values in an array
3 ビュー (過去 30 日間)
古いコメントを表示
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
2018 年 6 月 19 日
Please post the error message. It is much easier to fix an error than to guess, what the error is.
採用された回答
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
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 .
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!