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

相关推荐
ghie90905 小时前
x-IMU matlab zupt惯性室内定位算法
人工智能·算法·matlab
瑞雪兆丰年兮8 小时前
数学实验(Matlab符号运算)
开发语言·算法·matlab·数学实验
潇氡10 小时前
使用matlab进行数据拟合
matlab·数据拟合
买了一束花10 小时前
数据预处理之数据平滑处理详解
开发语言·人工智能·算法·matlab
英英_13 小时前
MATLAB中矩阵和数组的区别
机器学习·matlab·矩阵
passionSnail15 小时前
《用MATLAB玩转游戏开发》推箱子游戏的MATLAB趣味实现
开发语言·游戏·matlab
IT猿手1 天前
基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
神经网络·算法·matlab·人机交互·无人机·强化学习·无人机三维路径规划
码到成龚1 天前
问题及解决01-面板无法随着窗口的放大而放大
matlab·appdesigner
XuX031 天前
手搓传染病模型(SEIARW)
数学建模·matlab·微分方程·传染病
沅_Yuan1 天前
基于小波神经网络(WNN)的回归预测模型【MATLAB】
深度学习·神经网络·matlab·回归·小波神经网络·wnn