Export radiation pattern to stl

26 views (last 30 days)
Anne
Anne on 16 Feb 2021
Edited: DGM on 27 Sep 2025 at 8:29
Hey there,
I try to export a radiation pattern (3D) in the .stl format. That's my code:
fc = 62e9;
pm = design(patchMicrostrip, fc);
pattern(pm, fc);
Now it would be great to export this pattern as .stl or something similar. I'll be greatful for every idea or hint.
Thanks in advance!
  1 Comment
Anne
Anne on 17 Feb 2021
Edited: Anne on 17 Feb 2021
I thought about (and tried them):
> stlwrite (part of the antenna package), which needs a triangulation object as input, but i couldn't find a way to convert the 3D-pattern to a triangulation object
> surf2stl (https://uk.mathworks.com/matlabcentral/fileexchange/4512-surf2stl), which needs a Surface as input.
h = gcf;
get(h)
children = h.Children
axChild = children(6).Children
This shows me that "Axes" has a Child of type Surface. I can export this to an stl without problems, but it's just a sphere. So there has to be some information missing.
Thanks in advance for any helpfull idea!

Sign in to comment.

Answers (2)

Sai Kiran
Sai Kiran on 21 Dec 2022
Hi,
Please follow the steps below to export the 3D radiation pattern to .stl format.
[D,A,E]=pattern(pm,fc)
where D is the Directivity, A is an array of azimuth angle and E is an array of elevation angle.
[A,E]=meshgrid(A,E);
Download the surf2stl function from the below link.
surf2stl('filename.stl',D,A,E);
The resultant stl file contains the 3D radiation pattern.
I hope it resolves your query.

DGM
DGM on 14 Jul 2025
Edited: DGM on 27 Sep 2025 at 8:29
Let's go the rest of the way.
% let's say we have the pattern data
l = linearArray;
[D A E] = pattern(l,70e6);
% yeah, we're gonna need to expand
[A E] = meshgrid(A,E);
% but we also need to change to cartesian
% note the change of units and the shift on D
[X Y Z] = sph2cart(deg2rad(A),deg2rad(E),D - min(D(:)));
% now the data is in a form that can be accepted by surf() or surf2stl()
hs = surf(X,Y,Z); axis equal
% but we really don't need to use surf2stl() if we don't want to
[F,V] = surf2patch(hs,'triangles'); % the 'triangles' option is needed
T = triangulation(F,V); % now we can just write it like any STL
stlwrite(T,'test.stl')
% for show and tell, let's just read it back and show it
T = stlread('test.stl');
figure
trisurf(T,'facecolor',[1 1 1]*0.8,'edgecolor','none')
view(3); view(-40,33); camlight;
axis equal; grid on
As an aside, trying to learn toolboxes I don't even have, while in the confines of the forum editor is really a cumbersome feeling.
See also:

Community Treasure Hunt

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

Start Hunting!