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