Plotting antenna field patterns in spherical coordinates
49 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Rhiannon
le 21 Juil 2011
Réponse apportée : Vishwanath Iyer
le 3 Juin 2021
Hi, I have a 2D array which of the form A(theta, phi) and I want to plot A as a 3D surface. I have read advice which suggests to use the sph2cart function to convert to Cartesian coordinates, then use surf or mesh, but as size(A) = 46 90, i.e. it is not a square 2D array, it will not work. Any suggestions? Thanks
0 commentaires
Réponse acceptée
Kelly Kearney
le 21 Juil 2011
Why do you think your array needs to be square? Mesh, surf, etc. will accept any gridded data. Assuming your A values represent the radius at any given theta and phi:
theta = linspace(0, pi, 90);
phi = linspace(0, 2*pi, 46);
[theta, phi] = meshgrid(theta, phi);
A = ones(size(theta));
[x,y,z] = sph2cart(theta, phi, A);
mesh(x,y,z)
Is this what you're after?
Plus de réponses (2)
Ebrahim Forati
le 10 Juin 2020
Just added a couple of fixes to Kelley's answer:
theta = linspace(-pi/2, pi/2, 90); % theta is w.r.t. xy plane
phi = linspace(0, 2*pi, 46);
[theta, phi] = meshgrid(theta, phi);
A = ones(size(theta));
[x,y,z] = sph2cart(phi, theta, A); % fixed this line too
mesh(x,y,z)
0 commentaires
Vishwanath Iyer
le 3 Juin 2021
Consider the following function in Antenna Toolbox for plotting radiation patern data:
0 commentaires
Voir également
Catégories
En savoir plus sur Import, Export, and Visualization dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!