(仅供参考)matlab读取文本文件技巧

合集下载

Matlab06文件读写

Matlab06文件读写
格式:A= fscanf (fid, format, size) format用以控制读取的数据格式,由%加上 格式符组成,常见格式符: %s:字符串s=fscanf(fid, ‘%s’) %d:十进制数a=fscanf(fid,‘%5d’)读5位整数 %f:浮点数b=fscanf(fid,‘%6.2f’)读浮点数
8 2.828 9 3.000
10 3.162
(2)读取二进制文件
1. 打开文件fopen 2. 读取文件fread 3. 关闭文件fclose
fread
• A=fread(fid,size); • A=fread(fid,size,precision);
precision包括两部分:如:A=fread(fid,10,’float’);
功,返回0,否则返回–1。
例:文本文件table.txt为,以字符串读取
1 4 9 12 15 26 20 34 23 46 76
以浮点数读取
>> fid=fopen('table.txt','r'); >> title=fscanf(fid,'%s'); >> fclose(fid); >> title title = 1491215262034234676
生成一个文件名为tob.bin的二进制文件, 数据位5阶方阵,类型为整型,输出count 值为25。 幻方: magic(n) 生成一个n*n的矩阵,矩阵
元素是由整数1到n^2组成的并且任何行任何列 的和都相等,阶数n必须是大于等于3的标量。
读文件
>>fid5=fopen(‘tob.bin’,’r’); >>data=(fread(fid5,25,’int32’))’; >>data data=

MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)(转自matlab技术论坛)

MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)(转自matlab技术论坛)

MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)(转自matlab技术论坛)振动论坛原版主eight的经典贴MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢!特别说明:由于大家在 I/O 存取上以 txt 文件为主,且读取比存储更麻烦(存储的话 fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。

除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。

一. 基本知识:--------------------------------------------------转----------------------------------------------------1. 二进制文件与文本文件的区别:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。

这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。

如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。

譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

matlab文件操作及读txt文件

matlab文件操作及读txt文件

matlab文件操作及读txt文件matlab文件操作文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。

MATLAB提供了一系列低层输入输出函数,专门用于文件操作。

1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。

fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。

文件名用字符串形式,表示待打开的数据文件。

常见的打开方式如下:λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。

‘r+’:读写方式打开文件,打开后先读后写。

该文件必须已存在。

λλ‘w’:打开后写入数据。

该文件已存在则更新;不存在则创建。

‘w+’:读写方式打开文件。

先读后写。

该文件已存在则更新;不存在则创建。

λλ‘a’:在打开的文件末端添加数据。

文件不存在则创建。

λ‘a+’:打开文件后,先读入数据再添加数据。

文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。

关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。

sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。

如果要关闭所有已打开的文件用fclose(‘all’)。

2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。

其调用格式为:COUNT=fwrite(fid,A,precision)说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。

matlab文件操作总结

matlab文件操作总结

matlab文件操作总结MATLAB是一种高级编程语言和交互式环境,主要用于数值计算、分析和可视化。

MATLAB也可以用于文件操作,包括读取、写入和修改文件。

下面是一些基本的MATLAB文件操作总结:1. 读取文件:使用`fopen`函数打开文件,使用`fread`或`fscanf`函数读取文件内容。

示例:```matlab`fileID = fopen('','r'); % 打开文件data = fread(fileID,'%f'); % 读取数据,假设文件包含浮点数fclose(fileID); % 关闭文件````2. 写入文件:使用`fopen`函数打开文件,使用`fwrite`或`fprintf`函数写入文件内容。

示例:```matlab`fileID = fopen('','w'); % 打开文件以写入fwrite(fileID,data); % 写入数据到文件fclose(fileID); % 关闭文件````3. 追加到文件:使用`fopen`函数以追加模式打开文件,然后使用`fprintf`或`fwrite`函数写入数据。

示例:```matlab`fileID = fopen('','a'); % 打开文件以追加数据fprintf(fileID,'%f\n',newData); % 写入新数据到文件fclose(fileID); % 关闭文件````4. 处理文本文件:使用文本编辑器打开并处理文本文件。

MATLAB中的字符串变量可以用来表示和处理文本数据。

5. 二进制文件操作:MATLAB也支持二进制文件的读取和写入。

这通常涉及使用特定的格式说明符(例如'%f'表示浮点数),以及考虑字节顺序(大端或小端)。

6. 文件和路径管理:MATLAB提供了许多用于管理文件和路径的函数,例如`dir`, `pwd`, `cd`, `readdir`, `delete`, `move`, `copy`, `exist`等。

matlabload读取txt用法

matlabload读取txt用法

matlabload读取txt用法在MATLAB中,可以使用load函数来读取TXT文件。

load函数有几种用法,可以根据数据的格式和要求进行选择。

一种常见的用法是将TXT文件中的数据加载到一个矩阵中。

假设有一个名为data.txt的TXT文件,它的内容如下:```12345678910```要将这个TXT文件中的数据加载到一个矩阵中,可以使用以下命令:```matlabdata = load('data.txt');```现在,变量data将包含从TXT文件中读取的数据,并以矩阵的形式存储。

在这个例子中,data将是一个2x5的矩阵,包含了文件中的数据。

有时,TXT文件中的数据可能以特定的分隔符分隔,如逗号(,)或制表符(\t)。

可以使用load命令的-ascii选项来指定要使用的分隔符。

假设有一个名为data.txt的文件,它的内容如下:```1,2,3,4,56,7,8,9,10```要将这个以逗号分隔的数据加载到一个矩阵中,可以使用以下命令:```matlabdata = load('data.txt', '-ascii', 'delimiter', ',');```现在,变量data将包含从TXT文件中读取的数据,并以矩阵的形式存储。

load函数也可以用来读取包含文本的TXT文件。

假设有一个包含文本的TXT文件,内容如下:```HelloWorld```要将这个TXT文件中的文本加载到一个字符串数组中,可以使用以下命令:```matlabtext = load('text.txt', '-ascii');```现在,变量text将包含从TXT文件中读取的文本,并以字符串数组的形式存储。

除了load函数,MATLAB还提供了其他函数来读取和处理TXT文件的数据,如fgetl、fscanf和textscan等。

如何在matlab中读取TXT数据文件

如何在matlab中读取TXT数据文件

如何在matlab中读取TXT数据文件文章来源:不详作者:佚名--------------------------------------------------------------------------------该文章讲述了如何在matlab中读取TXT数据文件.今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用:下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。

function dataout=dataread(filein,fileout,line)fidin=fopen(filein,'r');fidout=fopen(fileout,'w');nline=0;while ~feof(fidin) % 判断是否为文件末尾tline=fgetl(fidin); % 从文件读行nline=nline+1;if nline==linefprintf(fidout,'%s\n',tline);dataout=tline;endendfclose(fidin);fclose(fidout); %%%%%%%%%%%%%%%%%%%%%%%%%%调用格式:dataout=dataread(filein,fileout,line)如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据a=textread('ll.txt');t=a(1:43,4:10);1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。

根据txt文档不同种类介绍不同的读取数据方法转自:/youngbrave/blog/item/878db31fcd4f220f304e15bb.html 一、纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了例如test.txt文件,内容为“17.901 -1.1111 33.04517.891 -1.1286 33.04517.884 -1.1345 33.045”可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。

MATLAB提供了一系列低层输入输出函数,专门用于文件操作。

1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。

fopen函数的调用格式为:fid=fopen(文件名,…打开方式‟)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。

文件名用字符串形式,表示待打开的数据文件。

常见的打开方式如下:λ…r‟:只读方式打开文件(默认的方式),该文件必须已存在。

…r+‟:读写方式打开文件,打开后先读后写。

该文件必须已存在。

λλ…w‟:打开后写入数据。

该文件已存在则更新;不存在则创建。

…w+‟:读写方式打开文件。

先读后写。

该文件已存在则更新;不存在则创建。

λλ…a‟:在打开的文件末端添加数据。

文件不存在则创建。

…a+‟:打开文件后,先读入数据再添加数据。

文件不存在则创建。

另外,在这些字符串后添加一个“t”,如…rt‟或…wt+‟,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。

2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。

关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。

sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。

如果要关闭所有已打开的文件用fclose(…all‟)。

2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。

其调用格式为:COUNT=fwrite(fid,A,precision)说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。

matlab读取.txt文件的方法

matlab读取.txt文件的方法

matlab读取.txt文件的方法如何使用MATLAB读取文本文件MATLAB是一种功能强大的数值计算和数据分析软件,也可以用于读取和处理文本文件。

读取文本文件是数据处理和分析中的常见任务,它能帮助我们获取和存储用于后续分析的重要数据。

在本文中,我们将提供一种详细的步骤,以通过MATLAB读取文本文件。

Step 1: 确定要读取的文本文件的路径和名称在使用MATLAB读取文本文件之前,首先需要知道要读取的文件的路径和名称。

可以使用以下两种方法之一来指定路径和文件名:方法一:使用相对路径相对路径是相对于MATLAB当前工作目录的路径。

MATLAB当前工作目录是指你当前正在使用的MATLAB文件所在的目录。

如果文本文件与当前工作目录中的MATLAB文件位于同一目录或其子目录中,则可以使用相对路径来指定文件路径。

相对路径使用'./'表示当前目录和'../'表示上一级目录。

方法二:使用绝对路径绝对路径是完整指定文件路径的方式。

通过使用绝对路径,你可以直接指定文件所在的文件夹和文件名来读取文件。

绝对路径可以直接从文件浏览器中复制并粘贴到MATLAB中。

Step 2: 使用fopen函数打开文本文件MATLAB中的fopen函数用于打开文件。

要打开文本文件,需要使用'rt'选项将文件以只读文本文件方式打开。

这样,MATLAB就可以正确解释文件中的每个字符。

下面是打开文本文件的示例代码:matlabfileID = fopen('path_to_file/filename.txt', 'rt');请将'path_to_file/filename.txt'替换为要读取的文本文件的实际路径和名称。

使用此命令将返回一个文件标识符fileID,它用于后续读取文件的步骤。

Step 3: 使用fgetl函数逐行读取文本文件一旦文件打开成功,我们可以使用MATLAB中的fgetl函数按行读取文本文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab下面这个函数是取filein中的第line行写入fileout稍微修改一下就可以。

function dataout=dataread(filein,fileout,line)fidin=fopen(filein,'r');fidout=fopen(fileout,'w');nline=0;while ~feof(fidin) % 判断是否为文件末尾tline=fgetl(fidin); % 从文件读行nline=nline+1;if nline==linefprintf(fidout,'%s\n',tline);dataout=tline;endendfclose(fidin);fclose(fidout);%%%%%%%%%%%%%%%%%%%%%%%%%%调用格式:dataout=dataread(filein,fileout,line)如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据a=textread('ll.txt');t=a(1:43,4:10);1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab 没有textread函数,直接从mathworks网站下载就行。

根据txt文档不同种类介绍不同的读取数据方法转自:/youngbrave/blog/item/878db31fcd4f220f304e15bb.html一、纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了例如test.txt文件,内容为“17.901 -1.1111 33.04517.891 -1.1286 33.04517.884 -1.1345 33.045”可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test 的数据文件。

二、中英文和数据如test1.txt“你好欢迎来到振动论坛1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555”这样的文件怎么读入数据呢?方法有多种,现举两个比较简单实用的。

方法一:file/import data....../next/finish>> whosName Size Bytes Classdata 5x4 160 double array textdata 4x1 300 cell array Grand total is 54 elements using 460 bytes>> datadata =1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555>> textdatatextdata ='你好''欢迎来到''振动论坛'''方法二:[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。

这里%s的个数和[a1,a2,a3,a4]对应。

>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)a1 ='1''2''3''4''5'a2 ='11''22''33''44''55'a3 ='111''222''333''444''555'a4 ='1111''2222''3333''4444''5555'因以字符串的形式读入,所以有''。

————————————————————————————————三、中文数据英文混乱如test.txt你好1 11 111 1111欢迎来到2 22 222 2222振动论坛3 33 333 33334 44 444 44445 55 555 5555说明:这种内容格式的文件用上面的方法是不行的。

以下是由chinamaker编写的一种方法:fidin=fopen('test.txt'); % 打开test2.txt文件fidout=fopen('mkmatlab.txt','w'); % 创建MKMATLAB.txt文件while ~feof(fidin) % 判断是否为文件末尾tline=fgetl(fidin); % 从文件读行if double(tline(1))>=48&&double(tline(1))<=57 % 判断首字符是否是数值fprintf(fidout,'%s\n\n',tline); % 如果是数字行,把此行数据写入文件MKMATLAB.txtcontinue % 如果是非数字继续下一次循环endendfclose(fidout);MK=importdata('MKMATLAB.txt'); % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来>> MKMK =1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555Matlab中从文件夹中批量读取文件的做法function [read_data]=batch_read_file(file_type);% <<---文件已完成,程序已修正--->>% 可以读取的文件中,若有列数不相同的,则补nan% 数据文件中只能是数字% *.xls 文件只能是英文或数字命名% 批量读数据的程序注,只能读取*.txt类文件,且文件必须有后缀名% [read_data_A]=batch_read_file('*.txt')% [read_data_A]=batch_read_file('*.xls')% file_type为文件的格式% 返回值read_data 为元胞数值,保存谋取到的数据% 对xls 文件的说明:% xls 文件以文件名升序排序% xls 文件只能容许一个工作表,若有多个,则读取的为名字值最大的一个工作表% file_type='*.txt'类or file_type='*.xls';% 示例:在数据文件中有如下内容1.txt% 1 2 3.345 1234.5422 12% 1.2222 2.3333 3.4444% 1 2 3 4 5 6 7 8 9% 读出的数据是一个(3,9)的矩阵空缺的部分为nanfile_read=dir(file_type);% 获得要读取的文件列表%%%%%%%%%%%%%-+-XLS XLS XLS XLS XLS-+-%%%%%%%%%% 在此段读取*.xls 类文件if strcmp(file_type,'*.xls')for i=1:length(file_read)file_name{i}=file_read(i).name;% 获取文件名的列表% 开始准备向从xls 文件中读取数据read_data{i}=xlsread(file_name{i});endelse%%%%%%%%%%%%%-+-TXT TXT TXT TXT TXT-+-%%%%%%%%% % 在此段读取*.txt 类文件for i=1:length(file_read)file_name{i}=file_read(i).name;fid=fopen(file_name{i},'r');% 开始准备向从文件中读取数据k=1;while ~feof(fid)% 这儿用fgetl似乎也没有错temp=fgets(fid);length_temp_data(k)=length(str2num(temp));% 求长度temp_read_data{i}{k}=str2num(temp);% 写%%%%%%%%k=k+1;end%%-----max_row=max(length_temp_data);% 求最大的长度,以确定补nan 的个数%%%%%%for j=1:k-1len=length(temp_read_data{i}{j});if len<max_rowtemp_read_data{i}{j}(len:max_row)=nan;endread_data{i}(j,:)=temp_read_data{i}{j};endfclose(fid);endend。

相关文档
最新文档