绿荷雨丝 发表于 2007-3-29 23:01

用matlab对fluent导出的结果进行处理而且可以将数据导出的例子(转贴)

matlab画图能力很强,而且其可编程性给处理问题带来很大方便,我尝试将fluent导出的ASCII数据导入matlab处理,原代码如下:

%打开文件并读入数据
fid=fopen('post','r');
name2=input('input the file name\n','s')
fgetl(fid)
data1=fscanf(fid,'%f %f %f %f %f',);
fclose(fid);
fid=fopen(name2,'r');
fgetl(fid);
data2=fscanf(fid,'%f %f %f %f %f',);
fclose(fid);
%对数据按坐标升序排列
xudata1=sortrows(data1',2);
xudata2=sortrows(data2',2);
xudata1=xudata1';xudata2=xudata2';
%找出sym和avg数据
maxr=max(xudata1(3,:));stp=0.0002;%y坐标最大值,求avg时候的x步长
avg1=zeros(2,round(1+0.02/stp));avg1(1,:)=0:stp:0.02;avg2=avg1;%对avg坐标赋初值
j=1;j2=1;jj=1;%j记录avg的当前index;j2记录avg(j)中第一个加入的xudata的index;jj记录sym的当前index
for i=1:length(xudata1)
   if xudata1(3,i)>maxr-0.00004
   sym1(1,jj)=xudata1(2,i);sym1(2,jj)=xudata1(5,i);
   sym2(1,jj)=xudata1(2,i);sym2(2,jj)=xudata2(5,i);
   jj=jj+1;
   end
      mii=fix((xudata1(2,i)+stp/2)/stp)+1;
   avg1(2,mii)=avg1(2,mii)+xudata1(5,i);
   avg2(2,mii)=avg2(2,mii)+xudata2(5,i);
   if mii>j|i==length(xudata1)
   avg1(2,j)=avg1(2,j)/(i-j2);
   avg2(2,j)=avg2(2,j)/(i-j2);
   i-j2
   j=j+1;j2=i;
   end
end
%绘图
figure(1)
plot(sym1(1,:),sym1(2,:),sym2(1,:),sym2(2,:))
figure(2)
plot(sym1(1,:),sym1(2,:),sym2(1,:),sym2(2,:),avg1(1,:),avg1(2,:),avg2(1,:),avg2(2,:));
legend('sym1','sym2','avg1','avg2');
hold on
plot(sym1(1,:),sym2(2,:)./sym1(2,:),avg1(1,:),avg2(2,:)./avg1(2,:));
legend('symrate','avgrate');
fid=fopen(['tec' name2],'w');
fprintf(fid,'TITLE = "heat transfer coefficient" \nVARIABLES = "x/d", "yta or rate" \nZONE T="sym", I=%d, F=POINT\n',length(sym2));
fprintf(fid,'%12.6f%12.6f',sym2);
fprintf(fid,'ZONE T="avg", I=%d, F=POINT\n',length(avg2));
fprintf(fid,'%12.6f%12.6f',avg2);
fclose(fid)
%用tecplot格式输出
fid=fopen('tecpost','w');
fprintf(fid,'TITLE = "heat transfer coefficient" \nVARIABLES = "x/d", "yta or rate" \nZONE T="sym", I=%d, F=POINT\n',length(sym1));
fprintf(fid,'%12.6f%12.6f',sym1);
fprintf(fid,'ZONE T="avg", I=%d, F=POINT\n',length(avg1));
fprintf(fid,'%12.6f%12.6f',avg1);
fclose(fid)

来自:http://wlflyy.blog.hexun.com/4722405_d.html

grta 发表于 2007-3-30 15:39

呵呵,很感兴趣,能不能把画的图贴出来啊

jiangwenxue999 发表于 2007-6-14 13:44

很好

请问可不可以输出数据到文本中呀?
jiangwenxue999@sina.com

hyacinth 发表于 2007-6-14 15:44

原帖由 jiangwenxue999 于 2007-6-14 13:44 发表 http://www.chinavib.com/forum/images/common/back.gif
请问可不可以输出数据到文本中呀?
jiangwenxue999@sina.com

可以,你的主题贴中已经回复

lnlyxia 发表于 2008-4-25 10:55

请教

为什么我用fluent —Export输出数据并以ASCII形式保存,用Matlab打不开呢?

tmjking 发表于 2008-4-25 15:30

回复 5楼 的帖子

在matlab中要用Import导入数据才可以的,此外你可以用记事本打开看看里面的格式是不是数组,否则导入是会出错的

xiong5527 发表于 2008-5-6 10:40

fid=fopen('post','r');
'post'    是什么格式的文件?我的fluent导出的数据文件不能用这句语言

tmjking 发表于 2008-5-19 17:16

'post'是文件全名,无后缀名。你把你输出的数据文件全名改写'post'才能用使用这个程序。
再不明白就查matlab的帮助文件看吧

guohf 发表于 2008-5-21 13:20

谢谢,正需要,非常不错的贴子。

chbo76 发表于 2008-5-23 16:26

呵呵。:@)
用matlab对fluent导出的结果进行处理,要求我们也要会matlab才行啊。

taojunhust 发表于 2008-9-6 17:34

回复六楼的大侠

我觉得六楼的兄弟对matlab用得很熟 啊。

tmjking 发表于 2008-9-29 16:21

回复 11楼 taojunhust 的帖子

很熟说不上了,以前用过几年,也就懂些皮毛而已。
用这种东西,经验很重要,当然对于数理逻辑上的概念也很重要。

yuanweizhao 发表于 2012-2-27 12:52

请问fluent能不能导出声学模块计算的结果呢,在EXPORT我找不到这方面的结果。另外,能讲一下贴子中,针对哪种输出呢?

seaharrier 发表于 2012-2-27 17:38

yuanweizhao 发表于 2012-2-27 12:52 static/image/common/back.gif
请问fluent能不能导出声学模块计算的结果呢,在EXPORT我找不到这方面的结果。另外,能讲一下贴子中,针对哪 ...

只要是数组就可以吧,符合一定标准格式

以前玩过一阵这个,不过是从CFX导出的数据,

现在竟忘了,

这个帖子不错,
多个软件结合应用的好例子。
页: [1]
查看完整版本: 用matlab对fluent导出的结果进行处理而且可以将数据导出的例子(转贴)