CST学习笔记(三)MATLAB与CST联合仿真-远场数据批量导出

CST学习笔记(三)MATLAB与CST联合仿真-远场数据批量导出

一、直接数据导出

(1)打开远场,调至笛卡尔坐标系

(2)然后点击post processing → Import/Export → Plot Data (ASCII) ,即可导出数据

二、数据后处理批量导出

  1. 在后处理模板导出
  2. 选择分辨率和要导出的远场数据
  3. 选择[PW],意思是导出激励源为平面波(plane wave)下的远场数据,有些仿真中用的是波端口[1]和[2]选择[1]和[2]则分别代表导出激励源为[1]或[2]下的远场数据。
  4. 点击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参数

相关推荐
鹿屿二向箔1 小时前
阀门流量控制系统MATLAB仿真PID
开发语言·matlab
没有黑科技1 小时前
0.雷达信号
matlab
QQ__17646198249 小时前
Matlab安装tdms插件
开发语言·matlab·tdms插件
天`南12 小时前
【三维异构Dvhop定位】基于灰狼优化算法的三维异构Dvhop定位算法【Matlab代码#93】
matlab·dvhop·异构无线传感器网络
小白狮ww12 小时前
Retinex 算法 + MATLAB 软件,高效率完成图像去雾处理
开发语言·人工智能·算法·matlab·自然语言处理·图像识别·去雾处理
机器学习之心16 小时前
区间预测 | QRTCN时间卷积神经网络分位数回归时间序列区间预测模型(Matlab完整源码和数据)
matlab·回归·cnn·分位数回归·时间卷积神经网络·qrtcn·区间预测模型
Matlab光学1 天前
MATLAB仿真:Ince-Gaussian光束和Ince-Gaussian矢量光束
开发语言·算法·matlab
东雁西飞1 天前
MATLAB 控制系统设计与仿真 - 33
开发语言·算法·matlab·机器人·自动控制
落雨封海1 天前
Matlab基础知识与常见操作【无痛入门】
matlab