• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab绘图——基于CST导出数据(CST图片Matlab实现)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为什么要导出数据到Matlab来画,不多此一举么?

显而易见,CST自带的结果查看和后处理局限性太大——直角坐标系字体难调节,图片线条、线型少,图片标注比例难控制等等。

直接copy的图片用在毕业论文或者小论文里面就显得那么没档次,很难看,也很不符合要求。

自然地,就有了利用Matlab来获取更好看更符合要求的CST结果图片的想法。

Matlab广为科研狗熟知,大家基本都有一定的Matlab基础;Matlab数据处理功能强大;科学绘图的简便易用更是首屈一指。

本着懒人的终极目标:为了留出能够偷懒的时间,把手头和将来的工作用最短的时间解决!

为避免将来写大小论文时因为图片编辑耗费大量工时,我在此把数据导出和图片编辑的m文件提前整理好,并分享给大家。

本懒人拥有的Matlab基础相当薄弱,期望与大家相互交流学习!

基于CST导出数据的Matlab绘图的基本流程

CST仿真得到结果→Post-Processing导出结果数据(包括1D Results、2D/3DResults、Farfields等)为txt—

→Matlab导入数据到矩阵→根据矩阵内的数据绘图

CST 1D Results→Matlab绘图

             CST原图                                 Matlab绘图          

 

%% 数据导入
%CST导出数据分布
%列      1                   2                           3                         4                       5
%"Frequency / GHz"	"S1,1 (21) [Mag]"	"S1,1 (21) [Pha in deg.]"	"Ref.Imp. [Mag]"	"Ref.Imp. [Pha in deg.]"
clc;clear;
S11=import_spar_mp(\'F:\OneDrive\cnblog\S11.txt\',[4,1004]);	%Matlab主页→导入数据  可以很方便地生成数据输入脚本或函数
S21=import_spar_mp(\'F:\OneDrive\cnblog\S21.txt\',[4,1004]); 
%% 图片绘制
S11mag=20*log10(S11(:,2));	%CST导出时设置了Magnitude/Phase输出,此处取dB值绘图
S21mag=20*log10(S21(:,2));
axisx=4:2/1000:6;	%定义横坐标范围
plot(axisx,S11mag,\'r-\',\'LineWidth\',1);
hold on
plot(axisx,S21mag,\'g-\',\'LineWidth\',1);   %两条曲线画在一张图中
hold off
%% 图片信息标注
xlabel(\'Frequency/GHz\',\'Fontsize\',10.5,\'FontName\',\'Times New Roman\');    %坐标轴信息
ylabel(\'Sparameter/dB\',\'Fontsize\',10.5,\'FontName\',\'Times New Roman\');
set(gca,\'FontName\',\'Times New Roman\',\'Fontsize\',10.5,\'XLim\',[4 6],\'XTick\',[4 4.5 5 5.5 6],\'YLim\',[-40 0],\'YTick\',[-40 -30 -20 -10 0]);   %对坐标轴的其他一些设置
% title(\'S参数\');
legend(\'S11\',\'S21\',\'Fontsize\',10.5,\'FontName\',\'Times New Roman\');   %图例

CST Farfields 1D Polar→Matlab绘图

          CST原图                                 Matlab绘图

 

%平面直角坐标or极坐标方向图
%CST导出数据分布
%    1              2            3                 4               5                   6               7              8           
%Theta [deg.]  Phi [deg.]  Abs(Gain)[dBi]   Abs(Theta)[dBi]  Phase(Theta)[deg.]  Abs(Phi)[dBi]  Phase(Phi)[deg.]  Ax.Ratio[dB]
clc;clear;
%% 数据导入
Farfield=import_field(\'F:\OneDrive\cnblog\Gain.txt\');
Farfield(length(Farfield)+1,:)=Farfield(1,:);   %补齐最后一行,首位相连,不然极坐标下会有一个空
Farfield(length(Farfield),1)=180;
Gain=Farfield(:,3);
axist=deg2rad(-180:180);	%设置坐标轴范围 角度转为弧度
figure  %启用一张新画布
polarplot(axist,Gain);
%% 极坐标图区域设置
axp=gca;    %将坐标区域属性赋给axp,和直接用set(gca,...)相同
axp.ThetaZeroLocation=\'top\';    %调整theta=0轴的位置,使其朝上,和CST中相同
axp.ThetaLim=[-180 180];
axp.ThetaTick=[-180 -135 -90 -45 0 45 90 135 180];
axp.FontName=\'Times New Roman\';
axp.FontSize=10.5;
axp.RAxisLocation=-90;  %r轴标注信息的位置,设为横向
axp.RLim=[-30 10];
axp.RTick=[-30 -20 -10 0];
%% 直角坐标系绘制
figure
axist=rad2deg(axist);   %弧度转回角度
plot(axist,Gain);   %平面直角坐标系各种属性设置同上
axc=gca;

 

CST Farfields 3D Plot→Matlab绘图

                CST原图

               Matlab绘图

  

%三维远场方向图
%CST导出数据分布
%    1             2           3                 4               5                  6               7                   8           
%Theta [deg.]  Phi[deg.]  Abs(Dir.)[dBi]   Abs(Left)[dBi]  Phase(Left)[deg.]  Abs(Right)[dBi]  Phase(Right)[deg.]  Ax.Ratio[dB]
clc;clear;
%% 数据导入
Farfield=import_field(\'F:\OneDrive\cnblogs\Farfield.txt\');
theta=reshape(Farfield(:,1),[360,181]); %坐标位置信息重排
phi=reshape(Farfield(:,2),[360,181]);
Gain=reshape(Farfield(:,3),[360,181]);  %结果信息重排
Gain=Gain+34;   %增益值有大量负值,直接画图形对不上
x=Gain.*sind(theta).*cosd(phi); %按坐标系转换,注意Matlab有球坐标直角坐标系转换函数sph2cart,但是其角度对应关系和习惯有所出入
y=Gain.*sind(theta).*sind(phi); %sind 角度为单位的三角函数
z=Gain.*cosd(theta);
figure
surf(x,y,z);
shading flat;   %设置颜色着色属性,和CST绘图更加接近
axis equal;     %设置坐标轴综合比相当
colormap(\'jet\');    %选择颜色图 jet深红至深蓝最合适
colorbar;   %显示颜色标尺

参考链接

https://bbs.rfeda.cn/read.php?tid=107972

https://blog.csdn.net/weixin_42613572/article/details/113581043

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab导入txt数据画图发布时间:2022-07-18
下一篇:
matlab实现图像高斯滤波 - 可可洁儿发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap