Matlab批量读取一个文件夹里的txt文件
我只需要读第二列
现在我想写一个.M文件 批量读取这个文件夹里的txt文件 读取完以后的数组变量名就是txt的文件名
现在问题:
1 MATLAB如何遍历一个文件夹里的所有函数
2 如果按照文件名创建一个变量? 展开
Matlab批量读取一个文件夹里的txt文件的方法。
如下参考:
1.首先,在这里举例制作一个txtde文本文件,如下面页面的内容。
2.将文本文件放入matlab的工作路径中,方便读取操作。例如,如果我的文本文件在桌面上,我可以将matlab的工作路径更改为桌面。具体方法是点击matlab的省略号后的当前工作路径,弹出选项选择文件夹,然后选择相应的路径。
3.接下来,我们使用importdata函数来读取文件。例如,我想读取一个名为data的文本文件,我可以在命令窗口中输入:data=IMPORTDATA('data.txt')。
4.结果表明,数据是一个结构化数组。在这一点上,我们可以看看结构的每个部分代表什么。如下图所示,第一个数组表示文本文件的数量,第二个和第三个数组表示文本文件中的汉字。此时,每个人都可以根据需要引用适当的数组。
5.除了上述功能,您还可以使用tex胎面函数来读取。使用该特性时,可以使用[a,b,c,d]=tex胎面('data')来指定输出的每个部分的格式。txt','%2s%。3f%。3f%.3f”)。
文本中的第二个引号表示输出的格式。例如,%2s表示第一列的输出格式是单元格数组%。3f表示输出数字保留三位小数。
file=dir('E:\new\*.txt');
for n=1:length(file)
temp=dlmread(['E:\new\',file(n).name],' ',0,1);
eval([file(n).name(1:end-4),'=temp;'])
end
dir函数可以有调用方式
dir('.') 列出当前目录下所有子文件夹和文件
dir('G:\Matlab') 列出指定目录下所有子文件夹和文件
dir('*.m') 列出当前目录下符合正则表达式的文件夹和文件
得到的为结构体数组每个元素都是如下形式的结构体
name -- filename
date -- modification date
bytes -- number of bytes allocated to the file
isdir -- 1 if name is a directory and 0 if not
datenum -- modification date as a MATLAB serial date number
分别为文件名,修改日期,大小,是否为目录,Matlab特定的修改日期
可以提取出文件名以作读取和保存用.
2.我想不到什么好方法,一般也就是使用一个统一的临时变量来读取文件数据,比如tmp,然后用一个字符串变量保存的变量名,比如str='a1'
要实现a1=tmp这样的语句,可以采用如下语句
str_a1=[str,'=tmp'];
eval(str_a1);
这样a1这个变量便出现在workspace中
但是问题是你并不知道那个变量名字叫a1啊?或者说我还找不到利用字符串值对变量寻址的方法,只能使用与上述过程相反的过程将值导入到一个知道名字的变量中,如tmp.
有兴趣的话可以探讨一下.
读取某个文件夹下面的所有txt文档后,发现可以生成一个(比如叫a)结构数组。这个a的内容和1楼描述的一样。
可惜我还是不能读某个txt文档的数据。不知道具体怎么弄?