24小时热门版块排行榜    

查看: 4986  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

elve920504

新虫 (初入文坛)

[求助] 用matlab进行批量处理数据时遇到的问题 已有2人参与

fluent计算结果输出170个压力分布数据,现在需要把数据进行批量处理求平均值。小女子新虫一枚,金币不多,望大神帮助。
下面是编的程序:
%-------------------------------------------------------------------------%
clear
%导入原始数据
cd('C:\Users\yangliu\Desktop\LES 未定义来流的湍流度\cp');%待处理的数据文件所在文件夹
Allname=struct2cell(dir); %得到上述文件夹下的所有文件名
%dir命令,可以得到路径内包括文件名在内的文件信息,为struc数据结构。
%-------------------------------------------------------------------------%

%逐个读入文件
[m,n]=size(Allname);
y=zeros(300,1);%对矩阵y进行赋值
for i=3:n %前两个不是文件名
    name=Allname{1,i};%第一行作为文件名用来提取数据
    hang=[5 304];%5行到304行
    lie=[1 2];%1到2列
    fid1=fopen('C:\Users\yangliu\Desktop\LES 未定义来流的湍流度\cp\name','r');
    temp=textscan(fid1,'%f %f ',5,304);%读取5-304行数据
    fclose(fid1);
     for k=1hang(2)-hang(1)+1)
         for l=1lie(2)-lie(1)+1)
             b=temp{l+lie(1)-1}{k+hang(1)-1};
              A(k,l)=str2num(b);
          end % for l=1lie(2)-lie(1)+1)
     end %  for k=1hang(2)-hang(1)+1)
   %将数据赋值到矩阵
     B(i)=A(:,2);
   if mod(i,n)==1
     fid2=fopen('C:\Users\yangliu\Desktop\LES 未定义来流的湍流度\cp\cpaverage.txt','wt');
        D(:,1)=A(:,1);
        D(:,2)=y(:,1)/(n-2);
      for j=1:1:300
        for m=1:1:2
            if m==2
               fprintf(fid,'%g\n',D(j,m));
            else
               fprintf(fid,'%g\t',D(j,m));
            end
         end
      end
      fclose(fid2);%将数据逐个写入文件中
   else
  i=i+1;
  y(:,1)=B(i)+y(:,1);
end %for if mod(i,n)==1
end %for i=3:n
这是自己编的程序,读取5-304行数据,并对第二列进行平均计算,提示错误使用 textscan。文件标识符无效。使用 fopen 生成有效的文件标识符。后面附有一个待处理的文件。小女子matlab刚开始学习,实在是不知道怎么改程序了,求各位大神帮助,不吝赐教啊。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 03cp.dat
  • 2015-11-30 16:10:50, 12.54 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Dlinlin

新虫 (小有名气)

这个解决了吗??我也在做fluent计算,碰到问题,想请教
2楼2017-06-02 15:39:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 elve920504 的主题更新
信息提示
请填处理意见