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