matlab的文件读取函数功能可以读取各种文件类型,如文本文件和二进制文件,如下表所示:

函数 功能(文件要求)
textscan 从文本文件或字符串读取格式化数据(一行中有整数,浮点数,字符串等)(读取已打开文件)
xlsread 读取Excel文件
importdata 从文件加载数据
load 将文件变量加载到工作区(常见的MAT文件,也可以是文本文件,如txt,dat等)
dlmread 将 ASCII 分隔的数值数据文件读取到矩阵(读取文本文件)
textread 同textread(不推荐用textread,改用textscan)
csvread 读取逗号分隔值 (CSV) 文件,读取已打开文件
fscanf 读取文本文件中的数据,读取已打开文件

textscan


 用法:

C = textscan(fileID,formatSpec)
C = textscan(fileID,formatSpec,N)  %按formatSpec读取文件数据N次,指定\'headerlines\'跳过指定行数

举例:

test.txt

daa fsds sds sdv
1 3.4 5.6 7.8
2 4.5 6.7 3.4
3 4.5 5.6 3.5

fileID = fopen(test.txt);
C = textscan(fileID,\'%d %f %f %f\',\'headerlines\',1);   % %d有符号整数 %f双精度浮点数 %s读取以空白或分隔符分隔的文本
fclose(fileID);

得到的C是一个cell类型的数据。

textscan与textread的区别:

  1. textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。而使用textscan函数之前需要先用fopen函数打开要读取的文件并返回句柄fid。
  2. 其次textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。而textscan函数每次读完数据后,其对应的句柄fid都是指向接下来要读数据的地方,类似于C函数中的文件读取指针,这样更方便于读取文本时的精确控制。
  3. 再次,textscan函数可以将多组数据读到一个元胞矩阵中,而textread函数只能将数据分别读取到不同的向量中。比如一个含有10行3列浮点数的文件,textscan函数可以将之读取到一个变量名A下 A=textscan(fid, \’%f%f%f\’), 而使用textread函数必须将之读入到三个变量名中  [A,B,C] = textread(filename,\’%f%f%f\’)。

参考:https://ww2.mathworks.cn/help/matlab/ref/textscan.html


xlsread(略)


importdata


 用法:

A = importdata(filename,delimiterIn,headerlinesIn)   %delimiterIn指定分隔符,headerlines指定跳过标题行数

举例:

C=importdata(\'test.txt\',\' \',1);

参考:https://ww2.mathworks.cn/help/matlab/ref/importdata.html?searchHighlight=importdata&s_tid=doc_srchtitle


load


 用法:

load(filename)     %如果filename是 MAT 文件,load(filename)会将 MAT 文件中的变量加载到 MATLAB工作区。如果filename是 ASCII 文件,load(filename)会创建一个包含该文件数据的双精度数组。
load(filename,variables)   %加载MAT文件中的指定变量,该变量要加引号\'\'
S = load(___)

 查看MAT文件中的内容:whos -file filename.mat

>> whos -file tiaohe.mat
  Name         Size            Bytes  Class     Attributes

  Aver_X      15x15             1800  double              
  H           15x15             1800  double              
  g           15x15             1800  double

查看文本文件内容:type filename

>> type test.txt

daa fsds sds dada
1 3.4 5.6 7.8
2 4.5 6.7 3.4
3 4.5 5.6 3.5 

参考:https://ww2.mathworks.cn/help/matlab/ref/load.html?searchHighlight=load&s_tid=doc_srchtitle


dlmread


 用法:

M = dlmread(filename)   % 将 ASCII 分隔的数值数据文件读取到矩阵M。dlmread函数从该文件中检测到分隔符,并将重复的空白视为一个分隔符。
M = dlmread(filename,delimiter)   %使用指定的分隔符读取该文件中的数据,并将重复的分隔符视为单独的分隔符。
M = dlmread(filename,delimiter,R1,C1)   %从行偏移量R1和列偏移量C1开始读取。
M = dlmread(filename,delimiter,[R1 C1 R2 C2])   % 仅读取行偏移量R1和R2及列偏移量C1和C2界定的范围。

 举例:

>> M=dlmread(\'test.txt\',\' \',1,0)
M =
    1.0000    3.4000    5.6000    7.8000
    2.0000    4.5000    6.7000    3.4000
    3.0000    4.5000    5.6000    3.5000
>> M=dlmread(\'test.txt\',\' \',[1,1,3,3])
M =
    3.4000    5.6000    7.8000
    4.5000    6.7000    3.4000
    4.5000    5.6000    3.5000

参考:https://ww2.mathworks.cn/help/matlab/ref/dlmread.html?searchHighlight=dlmread&s_tid=doc_srchtitle


csvread


M = csvread(filename)     %将逗号分隔值(CSV)格式化文件读入数组M中。该文件只能包含数值。
M = csvread(filename,R1,C1)    %从行偏移量R1和列偏移量C1开始读取文件中的数据。
M = csvread(filename,R1,C1,[R1 C1 R2 C2])   %仅读取行偏移量R1和R2及列偏移量C1和C2界定的范围。

举例:

新建文件test.csv(用记事本或Notepad打开):

daa,fsds,sds,dada
1,3.4,5.6,7.8
2,4.5,6.7,3.4
3,4.5,5.6,3.5
>> M = csvread(\'test.csv\',1,0)
M =
    1.0000    3.4000    5.6000    7.8000
    2.0000    4.5000    6.7000    3.4000
    3.0000    4.5000    5.6000    3.5000

参考:https://ww2.mathworks.cn/help/matlab/ref/csvread.html?searchHighlight=csvread&s_tid=doc_srchtitle


fscanf


用法:

A = fscanf(fileID,formatSpec)    %根据formatSpec指定的格式解释文件中的值。
A = fscanf(fileID,formatSpec,sizeA)     %将文件数据读取到维度为sizeA的数组A中,并将文件指针定位到最后读取的值之后。fscanf按列顺序填充A。sizeA必须为正整数或采用[m n]的形式。

 举例(略)

参考:https://ww2.mathworks.cn/help/matlab/ref/fscanf.html?searchHighlight=fscanf&s_tid=doc_srchtitle

 

版权声明:本文为keegentang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/keegentang/p/10690755.html