新浪博客

Comsol 4.2后处理提取数据的一些方法

2013-04-16 22:44阅读:
这几天用Comsol和Matlab做仿真,发现网上大部分的Comsol资料都很老了,不能在Comsol4.2中使用。如何从建模计算后,提取某点或者某条线的数据?经过几天探索,终于基本会了。 从Comsol中可以直接提取所需要的数据到文件,在“模型创建器”(Model Builder)的“结果”(Results)选项下的“导出”(Export)点鼠标右键,选取数据(Data),如图所示。
Comsol <wbr>4.2后处理提取数据的一些方法

在设定中的表达式(Expression)中,可以增加表达式,比如我做的是超声,可以得到声压场,如图所示。
Comsol <wbr>4.2后处理提取数据的一些方法

在输出中可设置输出路径,文件可选TXT、dat等。如图所示。
Comsol <wbr>4.2后处理提取数据的一些方法

再点导出(Output),就可以输出到文件了。。。
如果要提取某点或者某线上的数据呢?
用Matlab最方便了。对于Comsol4.2,直接在Matlab中用函数 mphinterp(model,'T','coord',[x;y;z])即可,即可提取坐标为x,y,z的数据。若[x;y;z]中x,y,z为变量,[x;y;z]为一条曲线,则得到的结果为该曲线上的点的数据。其中T为上文提到的表达式,即expression。
如我的一条循环提取声压级的语句:
for i=2:292
model.material('mat2').selection.set([i]);
model.sol('sol1').runAll;
model.result('pg2').run;
Sp(i-1,1)=mphinterp(model,'acpr.Lp','coord',[-0.0095;-0.0002]);
Sp(i-1,2)=mphinterp(model,'acpr.Lp','coord',[-0.0095;-0.0001]);
Sp(i-1,3)=mphinterp(model,'acpr.Lp','coord',[-0.0095;0]);
Sp(i-1,4)=mphinterp(model,'acpr.Lp','coord',[-0.0095;0.0001]);
Sp(i-1,5)=mphinterp(model,'acpr.Lp','coord',[-0.0095;0.0002]);
Sp(i-1,6)=mphinterp(model,'acpr.Lp','coord',[0.0095;-0.0002]);
Sp(i-1,7)=mphinterp(model,'acpr.Lp','coord',[0.0095;-0.0001]);
Sp(i-1,8)=mphinterp(model,'acpr.Lp','coord',[0.0095;0]);
Sp(i-1,9)=mphinterp(model,'acpr.Lp','coord',[0.0095;0.0001]);
Sp(i-1,10)=mphinterp(model,'acpr.Lp','coord',[0.0095;0.0002]);
end


形成291*10的矩阵存放数据。。。 Comsol <wbr>4.2后处理提取数据的一些方法


我的更多文章

下载客户端阅读体验更佳

APP专享