24小时热门版块排行榜    

查看: 4964  |  回复: 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的回帖

somomo91

专家顾问 (职业作家)

【答案】应助回帖


jjdg: 金币+1, 感谢参与 2017-06-03 01:20:08
这里的问题在于 textscan 输入格式不对,因为第一到第四行是字符串格式,所以自然会出错。
用循环很容易出错,能不用就不用
这里有更简单的解决方法,两行(其实一行)代码就可以解决的
CODE:
rawdata = textread('03cp.dat', '%s','delimiter', '\n');
data = cell2mat( cellfun(@str2num, rawdata(5:304),'un',0) );

3楼2017-06-03 01:00:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

Dlinlin

新虫 (小有名气)

这个解决了吗??我也在做fluent计算,碰到问题,想请教
2楼2017-06-02 15:39:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)


jjdg: 金币+1, 感谢参与 2017-06-03 01:20:22
完全不懂什么数据,不过曲线很有意思
用matlab进行批量处理数据时遇到的问题

4楼2017-06-03 01:03:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Deemo7

新虫 (初入文坛)

【答案】应助回帖

楼主您额批量处理的文件夹是几层的啊
5楼2017-06-29 08:36:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见