HFSS-Matlab-API中的dipole_example.m調試體驗
(1)發現問題
為了研究最優化算法,最近開始學習HFSS VBScript,并想結合Matlab使用,因而在微網上下載了HFSS-Matlab-API。
這個API包里的dipole_example.m例子有問題:迭代過程中,Matlab畫出的曲線位置不動,僅僅是顏色變了,仿佛數據結果沒有更新。我在網上搜索到有少數人也遇到了同樣的問題,其中也包括一位微網網友 (見),但是沒有搜到解答。是不是最近研究這個的少了?或者棄用Matlab與HFSS的結合了?
(2)分析問題
我安裝的是HFSS14.0 64bits和Matlab r2008a 64bits,操作系統Win7 64bits。經驗表明,積極主動地想辦法使得腳本適應軟件環境是正解,而輕易地懷疑軟件版本的不兼容性是不明智的。
通過比對HFSS記錄、生成的script和API包里的函數生成的腳本,并在HFSS、Matlab中進行調試,最后確認了問題的根源——API包中的"run(tmpDataFile);"語句執行時沒有成功執行最新生成的.m文件。看起來像是Matlab的原因,為什么?不能得到解答,但不影響嘗試解決。
(3)解決問題
解決問題和分析問題的過程是交織的。最后,通過一種比較笨的辦法——創建和刪除不同的臨時數據文件,解決了這一問題。這個辦法只改動了dipole_example.m文件,如下所示:
for iIters = 1:maxIters,
tmp = num2str(iIters);
tmpDataFile = ['E:hfss14temData' tmp '.m'];
tmpFid = fopen(tmpDataFile,'wt');
fclose(tmpFid);
……
system(sprintf('del %s',tmpDataFile));
end
當然,還要結合本機實際,更改程序中的路徑(如上面的“'E:hfss14”),在此不作贅述。
忙活了兩天,也許有的網友早就找到更好的方法了,歡迎指導!甚是欣慰,算是找到使用HFSS VBScript的基本方法了!
注:
Matlab在調用HFSS時,使用了安裝路徑作為命令行參數,命令行參數之間用空格分隔。在命令行參數中,由雙引號包圍的字符串("Program Files")被解釋為整體;如果去掉雙引號,就會被解釋為由空格分隔的多個命令行參數,路徑也就不完整了,這會導致HFSS不能被調用。因此:路徑有空格,請加雙引號。用雙引號把整個路徑括起來,也是可以的,比如'“D:Program FilesansoftHFSS14.0Win64hfss.exe”'。
附:運行結果。
原來是雙引號的問題哈 謝謝樓主了
雙引號,大贊
對于樓主的探究精神表示支持。
支持這樣的文章
我做出來用matlab 生成波紋喇叭模型的程序 但是這些函數不夠多,不能滿足所有 HFSS對應操作的函數。很多函數要自己寫
樓主能不能大體說下聯合仿真的步驟,我是初學者,謝謝了
欽佩樓主執著的探究精神!
嗯,真是太感謝了,只是對聯合仿真沒什么概念,做起來比較迷茫,想先大體了解,再深入了解。寫的很好,我會實踐的
敢問一下樓主,運行matlab程序,怎么生成vbs腳本,我點擊了運行之后好像沒什么反應啊
為什么我運行hfss-matlab-api中的例子里的vb腳本可以實現建模,而在自己的matlab上運行例子中的m文件生成的腳本后,這個腳本不可以實現建模,難道是我的matlab的問題嗎