如何用批处理是什么意思或者matlab对大量txt文档插入内容,谢了!

[转载]MATLAB批处理文件
%strcat是全并string
在数据处理中,通常有很多文件需要处理,而这些文件基本都很相似,比如说是矩阵,它们是相同维数的矩阵,一个一个的处理浪费很多时间,因此需要批处理文件,下面是其中一个方法:在一个文件夹中有21个文件,名字都有规律。
readfile={'D:单点和单体型CEU5=0.01chr1.dat',
'D:单点和单体型CEU5=0.01chr2.dat',
'D:单点和单体型CEU5=0.01chr3.dat',
'D:单点和单体型CEU5=0.01chr4.dat',
'D:单点和单体型CEU5=0.01chr5.dat',
'D:单点和单体型CEU5=0.01chr6.dat',
'D:单点和单体型CEU5=0.01chr7.dat',
'D:单点和单体型CEU5=0.01chr8.dat',
'D:单点和单体型CEU5=0.01chr9.dat',
'D:单点和单体型CEU5=0.01chr10.dat',
'D:单点和单体型CEU5=0.01chr11.dat',
'D:单点和单体型CEU5=0.01chr12.dat',
'D:单点和单体型CEU5=0.01chr13.dat',
'D:单点和单体型CEU5=0.01chr14.dat',
'D:单点和单体型CEU5=0.01chr15.dat',
'D:单点和单体型CEU5=0.01chr16.dat',
'D:单点和单体型CEU5=0.01chr17.dat',
'D:单点和单体型CEU5=0.01chr18.dat',
'D:单点和单体型CEU5=0.01chr19.dat',
'D:单点和单体型CEU5=0.01chr20.dat',
'D:单点和单体型CEU5=0.01chr21.dat'
writefile={'D:单点和单体型CEU5=0.01chr1.txt',
'D:单点和单体型CEU5=0.01chr2.txt',
'D:单点和单体型CEU5=0.01chr3.txt',
'D:单点和单体型CEU5=0.01chr4.txt',
'D:单点和单体型CEU5=0.01chr5.txt',
'D:单点和单体型CEU5=0.01chr6.txt',
'D:单点和单体型CEU5=0.01chr7.txt',
'D:单点和单体型CEU5=0.01chr8.txt',
'D:单点和单体型CEU5=0.01chr9.txt',
'D:单点和单体型CEU5=0.01chr10.txt',
'D:单点和单体型CEU5=0.01chr11.txt',
'D:单点和单体型CEU5=0.01chr12.txt',
'D:单点和单体型CEU5=0.01chr13.txt',
'D:单点和单体型CEU5=0.01chr14.txt',
'D:单点和单体型CEU5=0.01chr15.txt',
'D:单点和单体型CEU5=0.01chr16.txt',
'D:单点和单体型CEU5=0.01chr17.txt',
'D:单点和单体型CEU5=0.01chr18.txt',
'D:单点和单体型CEU5=0.01chr19.txt',
'D:单点和单体型CEU5=0.01chr20.txt',
'D:单点和单体型CEU5=0.01chr21.txt'
a=char(readfile);
b=char(writefile);
for i=1:21
read=importdata(a(i,:));
for j=1:200
for k=1:80
if rem(k,2)==1
c(j,k)=read(2*j-1,(k+1)/2);
c(j,k)=read(2*j,k/2);
write=fopen(b(i,:),'w');
[m,n]=size(c);
for i=1:1:m
for j=1:1:n
fprintf(write,'%gn',c(i,j));
fprintf(write,'%gt',c(i,j));
fclose(write);
另外方法如下:
把文件夹下的文件名字放在一个EXCEL文件中,导入matlab,命名为a
b{i}=importdata(a{i});
b(i)就是其中的第I个矩阵,然后我们可以对其处理分析,同理,输出的文件我们也可以放在一个EXCEL文件中,然后导入matlab
关于这类问题,网上还有很多方法,但是我都没看明白:搜集一下,以后解决把
问题1:我编写了一个matlab程序,每次对一个数据文件(.txt数据文件已load保存为mat文件).处理一遍得一个结果.但是有多个数据文件待处理,这样一遍一遍地输入执行然后得到结果,很麻烦,也很浪费时间.请问如何一次性批处理这多个数据文件得到相应的结果??
把.mat文件放到一起
先ctrl+a再按F2
命名为XX(i).mat
for i=1:100
load strcat('XX(',num2str(i),').mat'');
%strcat是全并string
Re:【讨论】matlab怎样批处理来读取excel格式的数据
这里有个我以前用的简单例子:
for i=9:1:18
proj_header = 'UGO_0';
proj_number = num2str(i);
proj_suffix = '.xls';
filename = [proj_header '0' proj_number proj_suffix];
filename = [proj_header proj_number proj_suffix];
data = xlsread(filename);
鉴于多数人对于高级语言不是很熟练,这里我使用matlab为例进行数据的批处理工作。
考虑一个文件件内有n个同一属性的数据文件,每个文件代表不同的年份,怎么对于这些文件进行统计整理?
下面是代码:
输入,比如在某文件夹内有n个txt或是dat等格式的文件,现在要一次性读入matlab:
%method 1:
cd f:xxx %xxx即是文件所在文件夹。
dat=struct2cell(dir);
for i=1:length(dat)-2
data{i}=importdata(dat{1,i+2}); %使用元胞数组存储各文件中的内容。
%method 2:
dat1=dir('f:data');
for i=1:length(dat1)-2
data1{i}=importdata(dat1(i+2).name);
多文件的输出:
考虑这个问题,我们必须先生成一个可以产生连续整数序列的函数生成注入001、002、003、……、999
类似整数。
我写了一个,作为参考:
function b=fullnum(n)
n~=floor(n)||n&=0||n&9999
fprintf('Error:The number is not allowed float-point,less than 0 or
larger than 9999!n');
if i&10^floor(log10(n))
b{i}=strcat(char(ones(1,floor(log10(n))-floor(log10(i)))*48),int2str(i));
b{i}=int2str(i);
下面使用类似这个的模板,存储一个元胞数组的内容到一系列连续文件名的文件:
mkdir F:data
name=fullnum(41);
for i=1:41
a=data{i};
save(strcat('F:datadata',name{i},'.txt'),'a','-ascii');
问题4:&[166]
%-------------------------------------------------------------------------%
%该程序实现了数据文件的批处理,并将处理后的文件以CL_name存储在相同文件夹中。
%对数据的处理为:每隔k步提取一组数据,将提取的数据写入文件存储
07.4.6 wangbo E-mail:
%-------------------------------------------------------------------------%
%导入原始数据
cd('D:Program FilesMATLABR2006anew');%待处理的数据文件所在文件夹
Allname=struct2cell(dir); %得到上述文件夹下的所有文件名
%dir命令,可以得到路径内包括文件名在内的文件信息,为struc数据结构。
%-------------------------------------------------------------------------%
%逐个读入文件
[m,n]=size(Allname);
for i=3:n%前两个不是文件名
name=Allname{1,i};
Imdata=importdata(name);
%-------------------------------------------------------------------------%
Bdata=Imdata.
textdata=Imdata.
colheaders=Imdata.
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);
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
%---------------------END-------------------------------------------------%
问题5:[求助]如何批处理文件名为自然数的文件&:
文件为名称为1到100的fits文件,如何用循环逐一调出来处理,谢谢。:)
可以用sprintf命令实现
fout=sprintf('d.fits',i);
load(fout);
问题5:大量数据文件的输入输出的批处理问题(matlab)[原]
大量数据文件的输入输出的批处理问题(matlab)
面对最近几年数据题越来越多,很多朋友都会问“批处理”怎么做,下面就基于matlab的输入输出函数,写一些个人看法。
我们以2005年的C题为例(C2005data)先说说这个数据的文件夹结构,X:C2005dataFORECAST下面有330个文件,328个数据文件,2个网格文件表示精度、维度;X:C2005dataMEASURING内有41个数据文件。可能我是学气象学的,对于这个数据比较敏感,也积累了一些处理经验。
【下面的话引自原文】【BEGIN】
FORECAST中的文件lon.dat和lat.dat分别包含网格点的经纬度,其余文件名为&f日期i&_dis1和&f日期i&_dis2,例如f6181_dis1中包含日晚上20点采用第一种方法预报的第一时段数据(其2491个数据为该时段各网格点的雨量),而f6183_dis2中包含日晚上20点采用第二种方法预报的第三时段数据。MEASURING中包含了41个名为&日期&.SIX的文件,如020618.SIX表示日晚上21点开始的连续4个时段各站点的实测数据(雨量),这些文件的数据格式是:
站号 纬度 经度 第1段 第2段 第3段 第4段
3 118.0 0.0 3.1000
0 118.0 0.0 7.4000
7 119.0 0.0 1.4000
0 119.0 0.0 1.8000
3 119.0 0.0 1.9000
i.现在我们就来处理这个数据读取问题(为方便起见,经纬度数据没读取):
%method 1:
cd E:data_spaceC2005dataFORECAST %文件所在文件夹。
dat=struct2cell(dir); %建立文件夹的树结构
for i=1:length(dat)-2 %减去2是由dos文件夹的组织决定的,这里不做解释
data{i}=importdata(dat{1,i+2}); %使用元胞数组存储各文件中的内容。
结果如下:data{1}(f6181_dis1文件)
0.1 0.7 0.1 0.0314
0.0 0.9 0.6 0.0335
上面也可以考虑使用结构体数组或元胞数组把文件名和寄存数据的元胞数组进行合并,使得文件信息直观化。
%method 2:
cd E:C2005dataMEASURING %文件所在文件夹。
dat=dir('E:C2005dataMEASURING');
%读取文件名,同时dat也是寄存文件名的结构体
for i=1:length(dat)-2
data{i}=importdata(dat(i+2).name); %元胞data即寄存了文件夹中的所有文件数据
结果如下:
1.0e+004 *
5.3 0. 0 0.0002
5.3 0. 0 0
接下来,我们只需对于元胞或结构体操作就可以达到目的了。
ii.多文件的输出:
考虑这个问题,我们必须先生成一个可以产生连续整数序列的函数生成注入001、002、003、……、999类似整数。
我写了一个,作为参考:
function b=fullnum(n)
n~=floor(n)||n&=0||n&9999
fprintf('Error:The number is not allowed float-point,less than 0 or
larger than 9999!n');
if i&10^floor(log10(n))
b{i}=strcat(char(ones(1,floor(log10(n))-floor(log10(i)))*48),int2str(i));%生成文件名序列;
b{i}=int2str(i);
下面使用类似这个的模板,存储一个元胞数组的内容到一系列连续文件名的文件:
mkdir F:data %需要输出的文件夹
name=fullnum(41); %输出文件的个数
for i=1:41
a=data{i};
save(strcat('F:datadata',name{i},'.txt'),'a','-ascii');
iii.格式输出问题
上面的程序是不可以格式输出的,matlab中是什么形式,文件就是什么形式,但有时我们不得不采取格式输出的原则,下面提供一个程序:
原始文件结构:
1.0e+004 *
Columns 1 through 8
0.1 1.8 -0.0 0 0.0001
0.2 1.9 -0.6 0 0.0001
data=importdata('E:Data_Spacebeijing.mat');
�ta1,2---年月
�ta3---气压(hPa)
�ta4---风速(m/s)
�ta5---气温(`C)
�ta6---相对湿度(%)
�ta7---降水量(mm)
�ta8---平均日照百分率(%)
�ta9---地表总辐射月均值(MJ/d)
�ta10---大气上届天文辐射月均值(MJ/d)
data(:,[3 4 5 7])=0.1*data(:,[3 4 5 7]);
%数据不寄存小数,需要对部分列进行预处理
data(:,6)=0.01*data(:,6);
format='%d - .3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f
fid = fopen('E:exp.txt','wt');
fprintf(fid,format,data');
fclose(fid)
这个程序自己看matlab帮助,不予以解释。
输出在E:exp.txt中的文件格式
年 月 气压 风速 气温 相对湿度 降水量 百分率 总辐射 天文
4.035 3.810 -4.242 0.399 0.000 0.702 9.873
1.914 3.864 -2.836 0.462 0.000 0.565 10.981 21.236
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。下次自动登录
现在的位置:
& 综合 & 正文
MATLAB与图像处理(二):批处理读取多张图片,cell
批处理读取多张图片
假如要从某一文件夹中读取66张图片,那么每次都使用I=imread('.....');这样处理速度不够快,不方便。下面就总结了几种批处理的方法。
在讲解这几种方法之前,先介绍MATLAB中的一个cell,这个cell相当于一个数组,只不过它允许不同的元素是不同的类型的,比如:cell(1,3)
表示预分配1*3的一个矩阵,然后我们就可以在这个矩阵中添加我们要想的数据
cell{1,1}='china' ;%表示在第一个位置放入一个字符串
cell{1,2}=99;
%表示在第二个位置放入一个数字
cell{1,3}=[1 2 3;4 5 6];%放入一个矩阵
I=cell(1,67);
for i=1:67
path=strcat('D:\快盘\LPRS\Libs\',int2str(i),'.bmp');
m=imread(path);
I=cell(1,67);
for i=1:67
m=imread(['D:\快盘\LPRS\Libs\',int2str(i),'.bmp']);
【上篇】【下篇】只需一步,快速开始
扫一扫,访问微社区
请完成以下验证码
查看: 2392|回复: 4|关注: 0
matlab批处理依次调用多个m文件
<h1 style="color:# 麦片财富积分
新手, 积分 11, 距离下一级还需 39 积分
大家好,我在用批处理的方式调用matlab执行多个m文件的时候,发现会同时执行,有什么方法依次执行吗?bat文件内容是这样的:
del result.log
start /wait /min matlab.exe -nosplash -automation -nodesktop -sd &C:\Program Files\MATLAB\R2012b\bin\matlab.bat& -logfile &result.log& -r &run('F:\step1.m')&
start /wait /min matlab.exe -nosplash -automation -nodesktop -sd &C:\Program Files\MATLAB\R2012b\bin\matlab.bat& -logfile &result.log& -r &run('F:\step2.m')&
想执行完step1.m的命令,生成一个文件,step2.m要用。
论坛优秀回答者
帖子最佳答案
关注者: 785
本帖最后由 hyowinner 于
18:11 编辑
你可以尝试不使用run,而是直接使用文件名调用M文件。
他们会依次执行完毕。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
<h1 style="color:# 麦片财富积分
m文件使用run时可能不会等待执行完毕就执行下一条run,我没有尝试,估计是这样。
你可以不使用run,而是直 ...
刚刚试了一下,去掉.m之后还是没有依次执行,不然这几个m文件只能写到一个m文件了
论坛优秀回答者
帖子最佳答案
关注者: 785
本帖最后由 hyowinner 于
18:18 编辑
刚刚试了一下,去掉.m之后还是没有依次执行,不然这几个m文件只能写到一个m文件了 ...
run也好,直接使用文件名调用也好,MATLAB环境内都是顺序依次执行的。
你这个问题是由于批处理命令导致的。
你在批处理命令里分别开启多个独立的matlab.exe来执行文件,这些matlab.exe的线程彼此独立,先后顺选则不在像MATLAB内部调用那般。
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/.html
<h1 style="color:# 麦片财富积分
run也好,直接使用文件名调用也好,MATLAB环境内都是顺序依次执行的。
你这个问题是由于批处理命令 ...
恩,明白了问题所在,这样我用tic 和toc算了一下程序运行的时间,在批处理中用sleep 语句等着matlab算完,在进行下面的计算。3Q
站长推荐 /3
Simulink工具定制实现高效模型验证
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区已解决问题
用matlab 批处理一些txt文件
浏览次数:1294
用手机阿里扫一扫
最满意答案
首先要把数据导入:有三种常见的方式:1.&A=importdata(&#39;filename.txt&#39;)&,filename是txt文件名;2.load&filename.txt&这样也是载入n*m的矩阵;3.在MATLAB的work文件夹下,选择想要导入的数据,用右键importdata,根据向导一步一步导入即可。导入之后最后用plot命令绘图即可。如果都画到一张图上,可将所绘的所有图形用origin&编辑。Matlab好像也是可以的,你自己找一下绘图窗口的相关工具。
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is okmatlab批量读取一个文件夹下的所有txt文件,并将这些txt文件里面的内容都写到一个txt文件当中来。_百度知道
matlab批量读取一个文件夹下的所有txt文件,并将这些txt文件里面的内容都写到一个txt文件当中来。
我在E:/这个文件夹下面有180个txt文件,我现在想把这180个txt文件的内容批量读取进matlab,然后输出成一个txt文件。这些文件名是有规律的,按照时间来排列的。本人新手,鼓捣了好久没搞出来,望前辈指点。
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
没必要用matlab批处理就可以搞定在那个文件夹下新建一个文本文档输入:type *.txt&&all.txt保存为.bat文件,然后运行就可以了。
大神,你的这个方法很好,可否再请教一个问题?我把所有的数据读入一个all.txt中之后,我想把这整个的txt文件按照某一项的升序排列,然后再把升序的这一列的每一个数值所对应的内容输出为txt,升序一共有多少数值,就生成多少txt。。。。。也就是和一开始合并为all.txt之前的文档换一种排列方式
有一个比较简单的办法,就是用excl把all.txt导入表中,然后用excl排序后导出可以再原始数据类型中采用‘’分隔符号“,然后选空格。以便于你可以吧你需要的内容分离成单独一列
这个方法我已经试过了,但是all.txt文件比较大,excel最多可以读入104w行,不够啊
我不太明白你说的 “把升序的这一列的每一个数值所对应的内容输出为txt,升序一共有多少数值,就生成多少txt” 难道要生成几百万个txt文件?
合并前有720个txt,文件名是按照时间排序的,从0.12月,一个月一个txt。用excel打开每一个txt,如图,A列表示是站点号,有5等,这个txt是用时间来排序的。。。我现在想把他们重新排序,以站点号来排序,比如50527是一个站点,我想把属于这个站点的所有年份的数据放到一起,输出成一个txt,有多少站点,就输出多少txt
@echo offsetlocal enabledelayedexpansionset &#47;p length=&输入站名的长度&set &#47;p datatxt=&输入待处理的文件名&set &#47;p seltxt=&输入分类名&for &#47;F %%i IN (%seltxt%) do (for &#47;F &delims=& %%j IN (%datatxt%) do (set str1=%%jif &!str1:~0,%length%!&==&%%i& echo %%j&&%%i.txt))echo OKpause&&nul同样批处理
大哥,能留个qq不,排序没成功,求指教,
你把你的号留下吧。我加你
采纳率:58%
为您推荐:
其他类似问题
txt文件的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 批处理是什么意思 的文章

 

随机推荐