许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab文件读取方法总结(TXT/Excel/Mat等)

Matlab文件读取方法总结(TXT/Excel/Mat等)

阅读数 5
点赞 0
article_banner

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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删



相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空