Plotting antenna field patterns in spherical coordinates

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

 採用された回答

Kelly Kearney
Kelly Kearney 2011 年 7 月 21 日

2 投票

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?

1 件のコメント

Rhiannon
Rhiannon 2011 年 7 月 21 日
Exactly what I was after. I was getting error messages when I was using sph2cart, and I assumed it was because I didnt have a square array, but it must have been something else.
Thank you

サインインしてコメントする。

その他の回答 (2 件)

Ebrahim Forati
Ebrahim Forati 2020 年 6 月 10 日

2 投票

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)
Vishwanath Iyer
Vishwanath Iyer 2021 年 6 月 3 日

0 投票

Consider the following function in Antenna Toolbox for plotting radiation patern data:

カテゴリ

質問済み:

2011 年 7 月 21 日

回答済み:

2021 年 6 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by