如何用matlab灵活控制feko的求解

https://bbs.rfeda.cn/read.php?tid=3778

Feko中的模型和求解设置等都可以通过editfeko进行设置,其文件存储为.pre文件,该文件可以用文本打开,因此,我们可以通过VB、VC、matlab等工具对.pre文件进行读写操作,以达到更灵活的使用feko。同样,对于.out文件,我们也可以进行读操作。

熟练使用对.pre文件和.out文件的操作后,我们可以方便的计算模型在各种情况下的结果,如螺旋天线每增加一圈,天线方向图的变化;飞行器角度的变化对rcs的影响,这些都可以用matlab来处理,而不用每次修改模型来实现。

首先我们先了解matlab如何调用feko文件的,有以下两个函数需要了解:

dos('prefeko 文件名')  
dos (‘runfeko 文件名')  

存储的.m文件与feko文件放在同一目录下,不然就得加上路径。

下面举例说明如何控制求解,以天线罩为例:
对于feko,只能求出天线罩对天线方向图的影响,如果要看天线罩每旋转一个角度对天线方向图的变化需要不断修改模型,工作量极大。我们就用matlab控制天线罩旋转角度,使它进行循环,不用人工干预求解。

1、首先建立好模型,设置好求解,天线罩的旋转角度用变量代替,我们就对该变量进行循环。操作如下:在IN卡下边添加FM卡,在FM卡下边添加#jiaodu变量,添加TG卡,TG卡用来控制模型的平移与旋转,在该项目中,我们是把该基本模型沿y轴旋转,初始#jiaodu是0度。

2、做好以上工作后,保存好工程文件,然后打开matlab,建立m 文件,我们需要角度为0-50度,可以设为 :

for i=1:1:5,#jiaodu为10*i

下面对文件进行读写 :

fid_r=fopen(‘文件名r’);
fid_w=fopen(‘文件名.tmp’,‘w’);
while ~feof(fid_r)
    line_r=fgetl(fid_r);
    g=strfind(line_r, #jiaodu= )  %找到该角度变量进行修改
    if g>0
    	newvalue=num2str(10*(i-1));
        line_r=strcat(prestr,newvalue);
    end
    fprintf(fid_w,'%s\n',line_r);
end %end while
fclose(fid_r);
fclose(fid_w);

copyfile('文件名.tmp',新文件名)存储新的文件名
用下面两个命令在matlab下运行feko(其实feko在后台运行),便可以得出计算结果。

dos('prefeko 新文件名')  
dos (‘runfeko 新文件名')

3、同理,提取.out文件的结果也可以在matlab中实现,需要用到的函数是uigetfile,该函数可以遍历.out文件,提取我们所需要的数值。用strfind找到目标具体数值进行提取。具体操作和前面的读写操作几乎一样,这里就不再啰嗦了。

总结:

用matlab来控制feko的求解还是很方便的,代码也不多,步骤有三:

  1. 建立模型;
  2. 编辑控制卡,设好变量;
  3. 用matlab控制变量的循环。值得注意的是,每循环一次就得求解一次,并提取所需要的结果,否则文件就会被覆盖掉。解决的办法是可以利用循环取不同的文件名,如name_1,name_2等。

你可能感兴趣的:(matlab,开发语言)