如何在MATLAB中从文本文件创建矩阵?

时间:2009-06-19 03:52:50

标签: matlab file-io matrix

我有一个包含4列的文本文件,每列有65536个数据点。行中的每个元素都用逗号分隔。例如:

X,Y,Z,AU
4010.0,3210.0,-440.0,0.0
4010.0,3210.0,-420.0,0.0
etc.

所以,我有 65536 行,每行有4个数据值,如上所示。我想将其转换为矩阵。我尝试将数据从文本文件导入excel文件,因为这样很容易创建矩阵,但我丢失了一半以上的数据。

5 个答案:

答案 0 :(得分:22)

如果文件中的所有条目都是数字,则只需使用a = load('file.txt')即可。它应该创建65536x4矩阵a。它比csvread

更容易

答案 1 :(得分:9)

你有没有尝试过使用'importdata'? 您只需要文件名和分隔符的参数。

>> tmp_data = importdata('your_file.txt',',')

tmp_data = 

          data: [2x4 double]
      textdata: {'X'  'Y'  'Z'  'AU'}
    colheaders: {'X'  'Y'  'Z'  'AU'}


>> tmp_data.data

ans =

        4010        3210        -440           0
        4010        3210        -420           0

>> tmp_data.textdata

ans = 

    'X'    'Y'    'Z'    'AU'

答案 2 :(得分:8)

您应该能够直接将文本文件读入MATLAB(使用函数FOPENFGETLFSCANFFCLOSE),而不是弄乱Excel。 :

fid = fopen('file.dat','rt');  %# Open the data file
headerChars = fgetl(fid);      %# Read the first line of characters
data = fscanf(fid,'%f,%f,%f,%f',[4 inf]).';  %'# Read the data into a
                                              %# 65536-by-4 matrix
fclose(fid);  %# Close the data file

答案 3 :(得分:7)

最简单的方法是使用MATLAB的csvread函数。

还有this工具可以读取CSV文件。

你也可以自己做,没有太多困难:只需循环遍历文件中的每一行,然后将其拆分为逗号并将其放入数组中。

答案 4 :(得分:5)

建议您熟悉dlmreadtextscan

dlmreadcsvread类似,但因为它可以处理任何分隔符(制表符,空格等),所以我倾向于使用它而不是csvread

textscan是真正的主力:很多选项,+它适用于打开的文件,并且处理“坏”输入(例如文件中的非数字数据)更加健壮。它可以像gnovice的建议中的fscanf一样使用,但我认为它更快(不要引用我的话)。