Matlab文件读取总结

本文详细介绍MATLAB中用于读取各种文件类型的函数,包括textscan、xlsread、importdata、load、dlmread、csvread和fscanf,涵盖了文本、CSV、Excel和二进制文件的读取方法。

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

 

转载于:https://www.cnblogs.com/keegentang/p/10690755.html

% Known encoding formats are the following FDSN codes: % 0: ASCII % 1: 16-bit integer % 2: 24-bit integer (untested) % 3: 32-bit integer % 4: IEEE float32 % 5: IEEE float64 % 10: Steim-1 % 11: Steim-2 % 12: GEOSCOPE 24-bit (untested) % 13: GEOSCOPE 16/3-bit gain ranged % 14: GEOSCOPE 16/4-bit gain ranged (untested) % 19: Steim-3 (alpha and untested) % % See also MKMSEED to export data in miniSEED format. % % % Author: Franois Beauducel % Institut de Physique du Globe de Paris % Created: 2010-09-17 % Updated: 2012-04-21 % % Acknowledgments: % Ljupco Jordanovski, Jean-Marie Saurel, Mohamed Boubacar, Jonathan Berger, % Shahid Ullah. % % References: % IRIS (2010), SEED Reference Manual: SEED Format Version 2.4, May 2010, % IFDSN/IRIS/USGS, http://www.iris.edu % Trabant C. (2010), libmseed: the Mini-SEED library, IRIS DMC. % Steim J.M. (1994), 'Steim' Compression, Quanterra Inc. % History: % [2012-04-21] % - Correct bug with Steim + little-endian coding % (thanks to Shahid Ullah) % [2012-03-21] % - Adds IDs for warning messages % [2011-11-10] % - Correct bug with multiple channel name length (thanks to % Jonathan Berger) % [2011-10-27] % - Add LocationIdentifier to X.ChannelFullName % [2011-10-24] % - Validation of IEEE double encoding (with PQL) % - Import/plot data even with file integrity problem (like PQL) % [2011-07-21] % - Validation of ASCII encoding format (logs) % - Blockettes are now stored in substructures below a single % field X.BLOCKETTES % - Add import of blockettes 500 and 2000 % - Accept multi-channel files with various data coding % [2010-10-16] % - Alpha-version of Steim-3 decoding... % - Extend output parameters with channel detection % - Add gaps and overlaps on plots % - Add possibility to force the plot % [2010-10-02] % - Add the input formats for GEOSCOPE multiplexed old data files % - Additional output argument with gap and overlap analysis % - Create a plot when no output argument are specified % - Optimize script coding (30 times faster STEIM decoding!) % % [2010-09-28] % - Correction of a problem with STEIM-1 nibble 3 decoding (one % 32-bit difference) % - Add reading of files without blockette 1000 with additional % input arguments (like Seismic Handler output files). % - Uses warning() function instead of fprintf().
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值