MATLAB: 如何读取txt中的文件 如何将数据批量写入数据 文件名递增

来源:互联网 发布:在ubuntu上卸载cuda6.5 编辑:程序博客网 时间:2024/05/17 22:40
问题:
现在有一个文件夹 里面有50个左右的txt文件 每个文件大概三万行 两列 第一列是字符串 第二列是浮点数字我只需要读第二列现在我想写一个.M文件 批量读取这个文件夹里的txt文件 读取完以后的数组变量名就是txt的文件名现在问题:1 MATLAB如何遍历一个文件夹里的所有函数2 如果按照文件名创建一个变量?
答案:
比如说在E:\new下有一系列txt文件,文件名符合matlab变量名的命名规则,并且没有temp.txt文件,每个文件有两列,以空格分割,第一列是字符串,第二列是浮点数字,要读取第二列的浮点数字为数组并以文件名为变量名。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
ADD
matlab的cat函数
cat:用来联结数组
用法:C = cat(dim, A, B)       按dim来联结A和B两个数组。
          C = cat(dim, A1, A2, A3, ...)    按dim联结所有输入的数组。
          EXP: a=cat(3,A,B) 左括号后的3表示构造出的矩阵维数;在新的矩阵中第1、2维就是A和B]这两
        个矩阵的行数和列数,第3维是A和B]这两个矩阵的矩阵个数,即为2
cat(2, A, B)相当于[A, B];
cat(1, A, B)相当于[A; B].
使用“,”分割列表的语法,cat(dim, C{:})或cat(dim, C.field),这是将包含数据矩阵的cell或结构数组联合为一个数组的方便方式。
例如:
>> A = [1 2; 3 4];
>> B = [5 6; 7 8];
>> A
A =
    1     2
    3     4
>> B
B =
    5     6
    7     8
>> cat(1, A, B) %按列连接(列数相同)
ans =
    1     2
    3     4
    5     6
    7     8
>> cat(2, A, B) %按行连接(行数相同)
ans =
    1     2     5     6
    3     4     7     8
>> cat(3, A, B) %合成效果如下图
ans(:,:,1) =
    1     2
    3     4
ans(:,:,2) =
    5     6
    7     8

a = magic(3) 
b = pascal(3)
 
k=1,合并后形如 [a;b],行添加矩阵(要求a,b的列数相等才能合并); 
>> c = cat(1,a,b) 
c =
 
     8     1     6 
     3     5     7 
     4     9     2 
     1     1     1 
     1     2     3 
     1     3     6 
k=2,合并后形如[a,b],列添加矩阵(要求a,b的行数相等才能合并) 
>> c = cat(2,a,b) 
c =
 
     8     1     6     1     1     1 
     3     5     7     1     2     3 
     4     9     2     1     3     6 
>> c = cat(3,a,b) 
c(:,:,1) =
 
     8     1     6 
     3     5     7 
     4     9     2 
c(:,:,2) =
 
     1     1     1 
     1     2     3 
     1     3     6 
n维的矩阵合并,要求n-1维维数相等才可以. 
>> c = cat(4,a,b) 
c(:,:,1,1) =
 
     8     1     6 
     3     5     7 
     4     9     2 
c(:,:,1,2) =
 
     1     1     1 
     1     2     3 
     1     3     6  用stacat()+int2str函数可以快速循环的将数据写如不同的文件。
0 0
原创粉丝点击