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

Ami*_*Jha 9 file-io matlab matrix

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

X,Y,Z,AU
4010.0,3210.0,-440.0,0.0
4010.0,3210.0,-420.0,0.0
etc.
Run Code Online (Sandbox Code Playgroud)

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

Dim*_*ima 22

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


Jes*_*pin 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'
Run Code Online (Sandbox Code Playgroud)


gno*_*ice 8

您应该能够直接将文本文件读入MATLAB(使用函数FOPEN,FGETL,FSCANFFCLOSE),而不是乱用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
Run Code Online (Sandbox Code Playgroud)


Dav*_*one 7

最简单的方法是使用MATLAB的csvread功能.

还有这个工具可以读取CSV文件.

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


Jas*_*n S 5

建议你熟悉dlmreadtextscan.

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

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

  • 呃....正如我在4年前的帖子中所说:`textscan`是真正的主力:很多选项,+它适用于打开的文件,并且处理"坏"输入(例如非数字)更加健壮文件中的数据) (2认同)