CST學習筆記(三)MATLAB與CST聯合仿真-遠場數據批量導出
一、直接數據導出
(1)打開遠場,調至笛卡爾坐標系
(2)然后點擊post processing → Import/Export → Plot Data (ASCII) ,即可導出數據
二、數據后處理批量導出
- 在后處理模板導出
- 選擇分辨率和要導出的遠場數據
- 選擇[PW],意思是導出激勵源為平面波(plane wave)下的遠場數據,有些仿真中用的是波端口[1]和[2]選擇[1]和[2]則分別代表導出激勵源為[1]或[2]下的遠場數據。
- 點擊evaluate
三、使用MATLAB代碼批量導出遠場數據
代碼如下:
% 添加 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參數