spark_xin 2014-09-24 15:27 采纳率: 0%
浏览 2054

matlab 批处理 依次读入,自动保存的问题

有几组数据,已经实现了数据处理,如果将数据单个读入用了”load"~~
由于数据有点大,现在想实现批处理,就是想让几组数据依次自动读入,把已经实现的程序改成函数,用个循环调用~~实现处理过的数据保存,比如初步想法如下,用四组数据举例~
readfile={'D:\Model1_Set1.mat',
'D:\Model1_Set2.mat','D:\Model1_Set4.mat','D:\Model1_Set5.mat'
}
writefile={'D:\Model1_Set1.txt',
'D:\Model1_Set2.txt','D:\Model1_Set4.txt','D:\Model1_Set5.txt'
}
最终将数据甚至图片进行保存成4个不同的文件
网上搜到了一些方法,自己没实现出来,求大神帮助。。

  • 写回答

1条回答 默认 最新

  • Coding_风清扬 2014-12-21 13:32
    关注

    一、在MATLAB新建一个txt_transform函数

    function txt_transform(file_in_path,file_num)
    total_num=file_num; %文件总个数
    name=1:total_num; %文件名向量
    txt='.txt'; %输入输出文件格式
    for i=1:total_num;
    %生成输入文件的路径和文件名
    namei=name(i);
    namei=int2str(namei);
    fin_name=cat(2,file_in_path,namei,txt);

    %数据读入
    fid1=fopen(fin_name,'r');
    [y1]=fscanf(fid1,'%f'); %数据类型%f,且数据是以空格为界逐个读入
    fclose(fid1);
    x=[];
    y=[];
    z=[];
    k=length(y1)/3;
    for i=1:length(y1)
    if (mod(i,3)==1)
    x=[x,y1(i)]; % 写入x
    else
    if(mod(i,3)==2)
    y=[y,y1(i)]; % 写入y
    else
    z=[z,y1(i)]; % 写入z
    end
    end
    end
    %数据处理 & 数据输出
    fid=0;
    fid=fopen(fin_name,'a+');
    fclose(fid);
    fid=fopen(fin_name,'wt'); %准备写文件
    for i=1:k
    fprintf(fid,'%f %f %f\n',x(i),y(i),z(i));

    end
    fclose(fid); %关闭
    end

    二、函数的调用与实现

    例如,在untitle.m文件中写入
    file_in ='C:\Users\Administrator\Desktop\新建文件夹\points';
    txt_transform(file_in,3);

    三、支持文件与数据的变化
    需要在桌面的新建文件夹中放入3个txt文件: points1.txt~point3.txt
    本人在这3个文件均写入:
    1 2 3
    4 5 6
    运行后的结果为:
    1.000000 2.000000 3.000000
    4.000000 5.000000 6.000000
    函数的主要作用:将文件中的每行数据用两个空格分开(请忽略数据格式的变化,即小数点后面多了些0).

    编程、码字很辛苦,望您采纳!

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!