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参数

相关推荐
机器学习之心3 小时前
Transformer-BiGRU多变量时序预测(Matlab完整源码和数据)
深度学习·matlab·transformer·bigru
slandarer15 小时前
MATLAB | 绘图复刻(十九)| 轻松拿捏 Nature Communications 绘图
开发语言·matlab
【杨(_> <_)】20 小时前
信号处理分析工具——时频分析(一)
算法·matlab·信号处理
曹勖之1 天前
在MATLAB中使用自定义的ROS2消息
开发语言·matlab·机器人·ros·simulink·ros2
我爱C编程2 天前
基于QPSK调制解调+Polar编译码(SCL译码)的matlab性能仿真,并对比BPSK
matlab·qpsk·polar编译码·scl译码
bubiyoushang8882 天前
matlab实现高斯烟羽模型算法
开发语言·算法·matlab
tyatyatya2 天前
MATLAB 中调整超参数的系统性方法
开发语言·matlab
Expecto03 天前
Matlab数值计算
matlab·数值计算
Matlab仿真实验室3 天前
基于Matlab实现LDA算法
开发语言·算法·matlab
三三十二3 天前
MATLAB实战:四旋翼姿态控制仿真方案
开发语言·matlab