Cartesian to polar sorting

I converted a set of coordinates from Cartesian to polar form
[rho,theta] = cart2pol(x,y);
Next I sorted the polar coordinates
theta_ascend = sort(theta,'ascend');
As in the case of any polar system I will have multiple values of rho for one value of theta. For every value of theta I want to select the maximum value of rho and reject the other values.
for e.g If my values are
theta = 3.14 3.14 3.14 3.13 3.13 3.12 3.12 3.12 . . . rho = 12 15 6 3 5 8 2 11 . . .
I want my output to be theta = 3.14 3.13 3.12 . . . rho = 15 5 11 . . .
Please suggest ?

 Accepted Answer

As an example:
% First some data to work with:
thet = round(rand(1,10)*3)
r = round(rand(1,10)*30)
% Now match the largest r per unique thet:
M = sortrows([thet.',r.']);
M = M([logical(diff(M(:,1)));true],:)

1 Comment

For some reason I am not able to convert the sorted polar coordinates to Cartesian
[x,y] = pol2cart(M(:,1),M(:,2))
or
[x,y] = pol2cart(theta,rho)
gives an error
Error: Unexpected MATLAB operator.

Sign in to comment.

More Answers (0)

Categories

Products

Community Treasure Hunt

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

Start Hunting!