CST学习笔记(三)MATLAB与CST联合仿真-远场数据批量导出
一、直接数据导出
(1)打开远场,调至笛卡尔坐标系
(2)然后点击post processing → Import/Export → Plot Data (ASCII) ,即可导出数据
二、数据后处理批量导出
- 在后处理模板导出
- 选择分辨率和要导出的远场数据
- 选择[PW],意思是导出激励源为平面波(plane wave)下的远场数据,有些仿真中用的是波端口[1]和[2]选择[1]和[2]则分别代表导出激励源为[1]或[2]下的远场数据。
- 点击evaluate
三、使用MATLAB代码批量导出远场数据
代码如下:
c
% 添加 CST 的 API 路径
addpath(genpath('E:\CST\CST_MATLAB\cstapi'));
% 启动 CST 和打开文件
cst = actxserver('CSTStudio.application'); % 加载 CST 应用控件
mws = invoke(cst, 'NewMWS'); % 新建一个 CST MWS 项目
% 打开一个已经存在的 CST 工程文件
fullfilename = which('x_polarized_5unit10.cst'); % 确保文件路径正确
invoke(mws, 'OpenFile', fullfilename); % 打开 CST 文件
% 获取 FarfieldPlot 对象并设置参数
farfieldplot = invoke(mws, 'FarfieldPlot');
% 配置方向图的基本参数
invoke(farfieldplot, 'Reset');
invoke(farfieldplot, 'Plottype', '3d'); % 设置为 3D 绘图
invoke(farfieldplot, 'Step', 5); % 设置步长为 5 度
invoke(farfieldplot, 'SetColorByValue', 'True');
invoke(farfieldplot, 'SetTheta360', 'False');
invoke(farfieldplot, 'SetPlotMode', 'Efield'); % 设置绘图模式为 Efield
invoke(farfieldplot, 'SetScaleLinear', 'True'); % 设置线性比例
invoke(farfieldplot, 'DBUnit', '0'); % 设置 dB 单位
invoke(farfieldplot, 'Distance', 1); % 设置远场距离
% 绘制第一个方向图
SelectTreeItem = 'Farfields\farfield (f=3.66) [PW]'; % 选择第一个频点的远场结果
invoke(mws, 'SelectTreeItem', SelectTreeItem); % 选择树中的结果项
invoke(farfieldplot, 'Plot'); % 绘制方向图
% 导出第一个方向图结果
export = invoke(mws, 'ASCIIExport');
export_path = 'D:\CSTproject\20250331article\x_polarized_5unit10_file\farfield_f16.txt'; % 导出路径
invoke(export, 'Reset');
invoke(export, 'FileName', export_path); % 设置导出路径
invoke(export, 'Execute'); % 执行导出
disp(['已成功导出方向图数据至:', export_path]);
% 绘制第二个方向图
SelectTreeItem = 'Farfields\farfield (f=3.72) [PW]'; % 选择第二个频点的远场结果
invoke(mws, 'SelectTreeItem', SelectTreeItem); % 选择树中的结果中的结果项
invoke(farfieldplot, 'Plot'); % 绘制方向图
% 导出第二个方向图结果
export_path = 'D:\CSTproject\20250331article\x_polarized_5unit10_file\farfield_f30.txt'; % 导出路径
invoke(export, 'Reset');
invoke(export, 'FileName', export_path); % 设置导出路径
invoke(export, 'Execute'); % 执行导出
disp(['已成功导出方向图数据至:', export_path]);
% 释放 COM 对象
release(mws);
release(cst);
rmpath(genpath('E:\CST\CST_MATLAB\cstapi'));
但是运行代码出现了以下问题:
我猜测是版本问题,我用的是CST2022,我参考的资料都是基于CST2020或2021的仿真,所以此代码仅供参考,有CST2020或2021的同志们可以尝试一下,如果成功了,可以在评论区回复一下。
附录
这是CST帮助文档中有关宏编辑的VBA代码,可以在这个里面参考学习。CST没有HFSS的脚本录制功能,其所有操作都在history tree中,所以想要快速建模可以参考历史树,但如果想要导出结果数据,历史树参考意义不大,还得多看参考文档和其他参考资料。
【1】[MWS]Mtalab如何控制CST导出数据
【2】CST如何导出和查看farfield远场数据 --- ffs,txt,csv
【3】CST仿真指导 | 使用宏Macro实现自动化
【4】【Matlab与CST MWS交互】:自动批量导出S参数

