Plotting antenna field patterns in spherical coordinates

60 ビュー (過去 30 日間)
Rhiannon
Rhiannon 2011 年 7 月 21 日
回答済み: Vishwanath Iyer 2021 年 6 月 3 日
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 日
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 日
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 日
Consider the following function in Antenna Toolbox for plotting radiation patern data:

カテゴリ

Help Center および File ExchangeImport, Export, and Visualization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by