2 u010485996 u010485996 于 2014.09.24 23:27 提问

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个回答

u014443759
u014443759   2014.12.21 21: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).

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Matlab依次读取多个.txt 文件与图片
1. 面对多个 .txt 文件的依次读入,且文件名按一定的规律命名,如:filename1.txt,filename2.txt,... 。个人总结如下。 (1)首先是纯数字数据类型的文本(不掺杂字符类型)依次读入,我们可以将其存储为cell数据类型,以便于后面关于数据的操作。在这里我们举一个例子:假如有10个 .txt 文件,我们把这些数据读入并存储为cell数据类型。我们可以使用循环依次读入文
matlab批处理读取图像文件和批写图像文件
源码很简单如下: clc clear all close all for k=1:62     s=strcat('E:\20151020\',int2str(k-1),'.bmp');     I=imread(s);     I=im2double(I);     level=graythresh(I); %计算灰度图像的阈值     BW=im2bw(I,level);  
matlab一次读取多幅图片的方法////////////读取文件夹中的所有图片or文件
我要一次读取E:\0.bmp到E:\500.bmp的图片怎么弄啊?用imread('E:\0.bmp')好像不能用循环啊,不可能叫我一张一张读吧?   那个大虾帮个忙啊,谢谢啊!!最好闪个例子哈,谢谢啊!!11!!! 这是我前以在百度提的一个问?问很了很久没有人回答,后面自己找书找到了!但后来有很多人给我发消息问同样的问题。  因为没有经常登百度常常很晚才回答别人,多不好意思的。我也
matlab读写excel并通过.bat按照顺序批处理.m文件
最近需要对一批excel进行格式的批量修改,起初想通过java语言使用excel框架来操作excel。 发现这种方式,及时做很小的修改,也需要完全把excel读入内存。 当excel很大的时候,这种方式绝对是行不通的,会造成内存溢出。 最后选用了matlab脚本程序来操作excel,发现效率高出很多。 1、对excel的操作方式 (1)java,c#等通过框架来操作:适合excel较小的
MATLAB与图像处理(二):批处理读取多张图片,cell
批处理读取多张图片 Last Edit 2013/12/11 假如要从某一文件夹中读取66张图片,那么每次都使用I=imread('.....');这样处理速度不够快,不方便。下面就总结了几种批处理的方法。 在讲解这几种方法之前,先介绍MATLAB中的一个cell,这个cell相当于一个数组,只不过它允许不同的元素是不同的类型的,比如:cell(1,3)             表示预分配
MATLAB工作空间的自动保存
基于MATLAB的工作空间数据自动保存,包括Simulink后缀为AutoSave
matlab中,如何一次读取同一个目录下的多个文件?
在大量数据处理中,有时候会碰到这样一种情况:同一个目录下有
MATLAB脚本中画图并自动保存
在处理数据时,经常发现需要批量的画图和保存,以观察数据规律。因此需要用脚本通过循环实现批量自动画图和保存。方法如下:data = importdata('log.txt'); for i = 1:size(data,2) y=data(:,i); x=[1:length(y)]; plot(x,y); saveas(gcf,['./','block_',num2s
1.16 从大到小顺序返回x,y和z的值
◇1.16 试写一算法,自大至小依次输出顺序输入的三个整数X,Y和Z的值。#include <stdio.h>int main() { int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a<b){ temp=b; b=a; a=temp; } if(b<c){
Python批处理同类型文件(读入+修改+写入新文件)
因研究工作,需批处理类文本文件,删除异常数据,然后重新写入新文件,程序如下: (因对NumPy的数组操作和Pandas的DataFrame对象操作仍不熟悉,而时间不足,故未使用,后续仍需改进) 涉及重点操作: 1、把连续空格替换为逗号row1 = &amp;amp;amp;amp;amp;amp;amp;quot;,&amp;amp;amp;amp;amp;amp;amp;quot;.join(row.split()) 2、遍历循环列表删除多个元素,应: 倒序循环for i in range(l