Cartesian to polar sorting

7 vues (au cours des 30 derniers jours)
Suhas Deshpande
Suhas Deshpande le 1 Juil 2011
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 ?

Réponse acceptée

Matt Fig
Matt Fig le 1 Juil 2011
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 commentaire
Suhas Deshpande
Suhas Deshpande le 1 Juil 2011
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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by