Export radiation pattern to stl

29 Ansichten (letzte 30 Tage)
Anne
Anne am 16 Feb. 2021
Bearbeitet: DGM am 27 Sep. 2025
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 Kommentar
Anne
Anne am 17 Feb. 2021
Bearbeitet: Anne am 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!

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Sai Kiran
Sai Kiran am 21 Dez. 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 am 14 Jul. 2025
Bearbeitet: DGM am 27 Sep. 2025
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!

Translated by