HFSS-Matlab-API中的dipole_example.m调试体验
(1)发现问题
为了研究最优化算法,最近开始学习HFSS VBScript,并想结合Matlab使用,因而在微网上下载了HFSS-Matlab-API。
这个API包里的dipole_example.m例子有问题:迭代过程中,Matlab画出的曲线位置不动,仅仅是颜色变了,仿佛数据结果没有更新。我在网上搜索到有少数人也遇到了同样的问题,其中也包括一位微网网友laokxu (见http://www.mwtee.com/forum.php?mod=viewthread&tid=15437),但是没有搜到解答。是不是最近研究这个的少了?或者弃用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:\hfss14\temData' tmp '.m'];
tmpFid = fopen(tmpDataFile,'wt');
fclose(tmpFid);
……
system(sprintf('del %s',tmpDataFile));
end
当然,还要结合本机实际,更改程序中的路径(如上面的“'E:\hfss14”),在此不作赘述。
忙活了两天,也许有的网友早就找到更好的方法了,欢迎指导!甚是欣慰,算是找到使用HFSS VBScript的基本方法了!
注:
Matlab r2008a 在调用HFSS时,使用了安装路径作为命令行参数,命令行参数之间用空格分隔。在命令行参数中,由双引号包围的字符串("Program Files")被解释为整体;如果去掉双引号,就会被解释为由空格分隔的多个命令行参数,路径也就不完整了,这会导致HFSS不能被调用。因此:路径有空格,请加双引号。用双引号把整个路径括起来,也是可以的,比如'“D:\Program Files\ansoft\HFSS14.0\Win64\hfss.exe”'。
附:运行结果。
谢谢小编的启发,不过我试了小编改进之后的代码,是会出现错误的。
正确的是应该省去下面两行,自己亲测成功了。
tmpFid = fopen(tmpDataFile,'wt');
fclose(tmpFid);
不过还是佩服小编的探索精神,以及感谢对我的启发。
希望考我们大家的力量,可以不断的扩充完善HFSS-Matlab-API。
以前做过,两则结合进行优化,感觉稳定性不可控,大型计算时,比如算1万次,偶尔会有错误,会很麻烦。
以前做过,两则结合进行优化,感觉稳定性不可控,大型计算时,比如算1万次,偶尔会有错误,会很麻烦。
对于小编的探究精神表示支持。
支持这样的文章
我做出来用matlab 生成波纹喇叭模型的程序 但是这些函数不够多,不能满足所有 HFSS对应操作的函数。很多函数要自己写
小编能不能大体说下联合仿真的步骤,我是初学者,谢谢了
钦佩小编执着的探究精神!
我跟你一样是初学者。你的要求很宏观,我认为要真正了解“联合仿真的步骤”,实践是根本办法!
就我现在的体会来说,学习、实践所谓“联合仿真”的“便捷”步骤可以概括如下:
第一步,在HFSS界面中反复尝试运行“Tools”菜单下的第三到第五项,尝试HFSS的各种操作,也就是记录、停止记录、运行、停止、暂停脚本。完成后你会发现HFSS VBScript脚本的特点。
第二步,设定一些简单任务,进行一些脚本的修改和在HFSS下运行这些脚本,利用帮助深入了解脚本函数里参数的意义与设置。完成后你会明白使用帮助的重要性。
第三步,运行HFSS-Matlab-API中的例子,也就是“联合仿真”的初步实践了。
假如你还已经熟悉了HFSS,实践过三维建模、仿真条件设置、计算、后处理及结果输出等过程,熟悉了Matlab程序编制和调试,如果你还熟悉了Matlab对字符串的操作,上述三步会简单很多。不过,你也可以用一个例子来迅速体会上面说的三步,dipole_example就是一例,你还可以拟制其他实例,由简到繁逐步深入。
4楼的网友说得很好,光是API包里的函数是远远不够的(估计这个团队没有继续工作了),也还有一些函数没有足够的容错能力(比如如果运行中HFSS异常中断,就必须重新启动Matlab)。而要编写新的适合你的研究开发的函数,上述第一、二步里面的内容就很丰富了。
一句话,纸上得来终觉浅,绝知此事要躬行!实践吧,计算机不会因此而爆炸的……
嗯,真是太感谢了,只是对联合仿真没什么概念,做起来比较迷茫,想先大体了解,再深入了解。写的很好,我会实践的
敢问一下小编,运行matlab程序,怎么生成vbs脚本,我点击了运行之后好像没什么反应啊
为什么我运行hfss-matlab-api中的例子里的vb脚本可以实现建模,而在自己的matlab上运行例子中的m文件生成的脚本后,这个脚本不可以实现建模,难道是我的matlab的问题吗
你可以发过来我瞅瞅
其实脚本文件只是把界面化得操作转成命令控制而已,理解了这一层其实就是做好两个东西 一个是操作函数 一个是目标
不懂什么意思啊
Hi, tangleilei !
(1)你应该描述清楚问题细节,可以猜到“在自己的matlab上运行”是何含义,但不知道你运行的是哪个*.m文件生成的脚本?
(2)你在HFSS界面上运行该脚本是否成功?
(3)*.m文件中关于hfss.exe的路径、临时文件夹路径等设置的语句有无问题?
另外,我现在认为这个api中3dmodeler、boundary等文件夹里面的所有函数和其他路径下的部分函数都没有存在的必要性。这个api包有一点点是因为“一时头热”而没有认真分析需求而来。强烈地不建议你把精力放在用这个api来建模上面!熟悉HFSS本身的3d建模和源、边界、扫描、求解设置是正解。
最近在研究这个问题。发现其中问题千奇百怪,,不能理解。比如运行dipole的例子,,只能自动生成脚本文件,,但是不能够计算S参数。输出时空。
我是初学者,,希望大家可以在此讨论,,共同进步。规避犯过的类似错误。
谢谢大家。
志同道合的大家能不能加上QQ聊聊。251425998
研究了半天,,依然是tmpdata.m中依然没有数据。各位大侠,,指教呀。
衷心感激小编的悉心指教。终于找到了问题所在,,在指定HFSS安装路径时hfssExePath ='D:\"Program Files"\ansoft\HFSS14.0\Win64\hfss.exe';"Program Files"的双引号是不能少的。不然是不能自动启动HFSS进行仿真的。在我的电脑上运行优化只是俩步优化就达到谐振频点。总算是达到要求。
再次声明对小编的万分感谢。
不客气!搜狗了一下“双引号 命令行参数”,得到结果: http://bbs.csdn.net/topics/80300440。
在命令行参数中,由双引号包围的字符串("Program Files")被解释为整体;如果去掉双引号,就会被解释为由空格分隔的多个命令行参数,路径也就不完整了。因此:路径有空格,请加双引号。用双引号把整个路径括起来,也是可以的,比如'“D:\Program Files\ansoft\HFSS14.0\Win64\hfss.exe”'。
原来是双引号的问题哈 谢谢小编了
双引号,大赞
在使用matlab调用hfss时matlab怎么获得轴比、阻抗匹配、增益等有关hfssf仿真参数结果呢?
以前做过,两则结合进行优化,感觉稳定性不可控,大型计算时,比如算1万次,偶尔会有错误,会很麻烦。
以前做过,两则结合进行优化,感觉稳定性不可控,大型计算时,比如算1万次,偶尔会有错误,会很麻烦。
赞一个小编!
谢谢小编的启发,不过我试了小编改进之后的代码,是会出现错误的。
正确的是应该省去下面两行,自己亲测成功了。
tmpFid = fopen(tmpDataFile,'wt');
fclose(tmpFid);
不过还是佩服小编的探索精神,以及感谢对我的启发。
希望考我们大家的力量,可以不断的扩充完善HFSS-Matlab-API。
谢谢小编的分享