MATLAB: How to pick random values in a vector

random pickrandomly select

How to pick randomly intensities with non zero values in an image. I want to pick only two intensities. My answer should be (x1,y1) and (x2,y2) which are row and column values of particular image. Please help. Thanks.

Best Answer

idx = find(YourImage ~= 0);
randidx = idx(randperm(length(idx),2));
[x, y] = ind2sub(size(YourImage), randidx);
x1 = x(1); x2 = x(2); y1 = y(1); y2 = y(2);
Caution: when you are talking about images, x is the column number, not the row number. I left it in the order you specified, but if you try to use it to plot with you will see that what you asked for is not the way it works.