用matlab对文件进行批处理
一个文件夹下有500个文本文件,且文件名不规则,这500个文本文件均为一列数据,现在要把每个文本文件中的数据都加1,然后再以与原来相同的文件名保存,应该怎么写批处理的代码...
一个文件夹下有500个文本文件,且文件名不规则,这500个文本文件均为一列数据,现在要把每个文本文件中的数据都加1,然后再以与原来相同的文件名保存,应该怎么写批处理的代码呢?主要不会用原来的文件名批量保存,麻烦写的详细些~~~~
展开
5个回答
展开全部
%该程序实现了数据文件的批处理,并将处理后的文件以CL_name存储在相同文件夹中。
%对数据的处理为:每隔k步提取一组数据,将提取的数据写入文件存储
%
%2007.4.6 wangbo E-mail:wboboer@163.com
%-------------------------------------------------------------------------%
clear
%提取间隔
k=4;
%导入原始数据
cd('D:\Program Files\MATLAB\R2006a\new');%待处理的数据文件所在文件夹
Allname=struct2cell(dir); %得到上述文件夹下的所有文件名
%dir命令,可以得到路径内包括文件名在内的文件信息,为struc数据结构。
%-------------------------------------------------------------------------%
%逐个读入文件
[m,n]=size(Allname);
for i=3:n%前两个不是文件名
name=Allname{1,i};
Imdata=importdata(name);
%-------------------------------------------------------------------------%
Bdata=Imdata.data;
textdata=Imdata.textdata;
colheaders=Imdata.colheaders;
clear Imdata
%简化变量名
%-------------------------------------------------------------------------%
%数据提取
B_tiqu=Bdata([1:k:end],;
%-------------------------------------------------------------------------%
%数据输出
t1=cell2mat(textdata(1,1));
t2=cell2mat(textdata(2,1));
c=cell2mat(colheaders(1,);
%保存文件重命名为CL_name
qianzhui='CL_';
name=[qianzhui,name];
%数据写入
%表头文字部分
f=fopen(name,'wt','n','ASCII');%创建并打开文件
fprintf(f,t1);
fprintf(f,'\n');
fprintf(f,t2);
fprintf(f,'\n');
fprintf(f,c);
fprintf(f,'\n');
clear t1 t2 c qianzhui name
%数据部分
M=length(B_tiqu);
for i=1:M
fprintf(f,'%d %d %d %d',B_tiqu(i,);%输出格式类似C语言,可自己调整
fprintf(f,'\n');
end%for i=1:M
fclose(f);%关闭文件
end %for i=3:n
%对数据的处理为:每隔k步提取一组数据,将提取的数据写入文件存储
%
%2007.4.6 wangbo E-mail:wboboer@163.com
%-------------------------------------------------------------------------%
clear
%提取间隔
k=4;
%导入原始数据
cd('D:\Program Files\MATLAB\R2006a\new');%待处理的数据文件所在文件夹
Allname=struct2cell(dir); %得到上述文件夹下的所有文件名
%dir命令,可以得到路径内包括文件名在内的文件信息,为struc数据结构。
%-------------------------------------------------------------------------%
%逐个读入文件
[m,n]=size(Allname);
for i=3:n%前两个不是文件名
name=Allname{1,i};
Imdata=importdata(name);
%-------------------------------------------------------------------------%
Bdata=Imdata.data;
textdata=Imdata.textdata;
colheaders=Imdata.colheaders;
clear Imdata
%简化变量名
%-------------------------------------------------------------------------%
%数据提取
B_tiqu=Bdata([1:k:end],;
%-------------------------------------------------------------------------%
%数据输出
t1=cell2mat(textdata(1,1));
t2=cell2mat(textdata(2,1));
c=cell2mat(colheaders(1,);
%保存文件重命名为CL_name
qianzhui='CL_';
name=[qianzhui,name];
%数据写入
%表头文字部分
f=fopen(name,'wt','n','ASCII');%创建并打开文件
fprintf(f,t1);
fprintf(f,'\n');
fprintf(f,t2);
fprintf(f,'\n');
fprintf(f,c);
fprintf(f,'\n');
clear t1 t2 c qianzhui name
%数据部分
M=length(B_tiqu);
for i=1:M
fprintf(f,'%d %d %d %d',B_tiqu(i,);%输出格式类似C语言,可自己调整
fprintf(f,'\n');
end%for i=1:M
fclose(f);%关闭文件
end %for i=3:n
参考资料: http://bbs.sciencenet.cn/showtopic.aspx?topicid=18215&forumpage=1&onlyauthor=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把.mat文件放到一起
先ctrl+a再按F2
命名为XX(i).mat
for i=1:100
load strcat('XX(',num2str(i),').mat'');
end
%strcat是全并string
先ctrl+a再按F2
命名为XX(i).mat
for i=1:100
load strcat('XX(',num2str(i),').mat'');
end
%strcat是全并string
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路两种方案:
一种,写到临时文件,再覆盖回来。
二种,以读写方式打开。
二十分钟后再来取吧。
第二种方案:
dirpath=uigetdir;
filestruct=dir(dirpath);
Nfile=length(filestruct);
for i=1:Nfile
if strcmp(filestruct(i).name,'.') || strcmp(filestruct(i).name,'..')
continue;
end
fp=fopen([dirpath,'\',filestruct(i).name],'r+');
data=fscanf(fp,'%f')
data=data+1;
frewind(fp);
fprintf(fp,'%f\r\n',data);
fclose(fp);
end
不过输出数据的形式改成浮点型,即使以前是1,这里会变成2.0000
一种,写到临时文件,再覆盖回来。
二种,以读写方式打开。
二十分钟后再来取吧。
第二种方案:
dirpath=uigetdir;
filestruct=dir(dirpath);
Nfile=length(filestruct);
for i=1:Nfile
if strcmp(filestruct(i).name,'.') || strcmp(filestruct(i).name,'..')
continue;
end
fp=fopen([dirpath,'\',filestruct(i).name],'r+');
data=fscanf(fp,'%f')
data=data+1;
frewind(fp);
fprintf(fp,'%f\r\n',data);
fclose(fp);
end
不过输出数据的形式改成浮点型,即使以前是1,这里会变成2.0000
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
for /f "tokens=* delims=" %%i in ('dir /a-d /b *.txt') do (
for /f "tokens=* delims=" %%a in (%%~nxi) do (
set /a n=%%a+1
echo %n%>>tempxx.bak
)
del %%~nxi
ren tempxx.bak %%~nxi
)
for /f "tokens=* delims=" %%i in ('dir /a-d /b *.txt') do (
for /f "tokens=* delims=" %%a in (%%~nxi) do (
set /a n=%%a+1
echo %n%>>tempxx.bak
)
del %%~nxi
ren tempxx.bak %%~nxi
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询