matlab代码文件称之为,Matlab实现文件读写的几种方法(确实很好,不错)

Matlab有着强大的数据处理功能,经常需要从外部文件读取数据或将数据写到外部文件。Matlab和外部文件进行数据交换相关的命令,个人目前了解到的有以下几种。

(0)自己添加

你可以将txt的一些文本数据直接拷贝到matlab窗口,然后保存为mat文件,下次就可以直接采用load函数了。

(1)Load

load 从Matlab的数据文件.mat中读取变量数据,也可以从.txt

.dat等文件中读取数据。使用load命令读取数据以后在Matlab中数据变量和文件同名。例如使用“load

data.txt”后数据变量名即为data。

需要注意的是文件格式的不同,文件格式分为二进制格式和ASCII格式两种。如果是二进制格式的文件,可以使用load命令直接读取。但如果是ASCII格式的文件,需要保证数据是整齐的(每一行数据个数要一致),否则会出错。

例:

data.txt文件(ASCII格式)

0 1

1 2 3

0

使用“load data.txt”将会出错。

data1.txt文件

0 1 2

1 2 3

2 3 4

使用“load data1.txt”能顺利读入3*3矩阵。

和load相对应的写数据命令为save,一般存为.mat文件,save保存的文件格式为二进制格式。

二进制和ASCII的区别

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码:00110101(5)

00110110(6)   00110111(7)

00111000(8) 共占用4个字节。ASCII码文件可在屏幕上按字符显示,

例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110

00101110

(十进制5678转换成二进制)只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。

(2)importdata

importdata根据文件名将数据导入到Matlab工作区。可以导入文件类型有很多,.txt .wav

等等。导入的数据(包括字符串和数值)以结构形式存放在工作区,可以使用whos命令来查看工作区的数据。

importdata可以导入load不能读取的长短不一的ASCII文件。当文件中既包含字符串又包含数值,而且数值长度个数不一时,可以使用importdata命令。注意读取的数值矩阵列数以文件中数值第一行的列数为标准。

例 test.txt

This is a test.Start0 1 21 21 2 3 4

运行A=importdata('test.txt')

结果:

A =

data: [4x3

double]

textdata: {2x1 cell}

A.data =

0

1

2

1

2

NaN

1

2

3

4

NaN   NaN

A.textdata =

'This is

a test.'

'Start'

另外,读取的字符串只能位于数值之前,位于数值之后的将被忽略。

例:test.txt

0 1 21 21 2 3 4End.

运行A=importdata('test.txt')

结果:

A =

0

1

2

1

2

NaN

1

2

3

4

NaN   NaN

除了importdata命令以外,还可以从菜单选项file-->import

data...导入数据文件,效果和importdata命令一样。

(3)fopen

fopen打开一个文件并创建文件标识以供接下来的读写等操作。fopen命令本身不进行读操作。然后可以使用fscanf读取数据,根据需要对数据进行筛选编辑。

例:读取字符串的方法

data.txt

0 1 21 2 31 2 3End.

fid=fopen('data.txt');    %打开文件,创建文件标识

A=fscanf(A,'%c');         %读取数据

fclose(fid);              %关闭文件标识

i=findstr(A,'End');       %查找标识

B=A(1:i-3);

%提取数据,换行为2个字符

C=str2num(B);

%将数据转换成数值矩阵

结果:

A =

0 1 2

1 2 3

1 2 3

注意其中str2num同样需要保证数值矩阵中列数一致,如果不一致,则结果为空。

0 1 21 21 2 3End.

结果C=[]

例:读取行的方法

fid1=fopen('data.txt');fid2=fopen('numbers.txt','w');while

~feof(fid1)

aline=fgetl(fid1);

if

double(aline(1))>=48&&double(aline(1))<=57

fprintf(fid2,'%s\n',aline);

continue

endend

fclose(fid1);fclose(fid2);

numbers.txt即为按行保存的数值文件还有另外的方法

在MATLAB中,来读取和写入文本文件是很简单的事。下面,就来简单介绍下。如果有其他问题,请留言。

一、读取文本文件

思路:

1、用fopen来打开一个文件句柄

2、用fgetl来获得文件中的一行,如果文件已经结束,fgetl会返回-1

3、用fclose来关闭文件句柄

比如,TIM_Grid_Data.txt的内容如下:

0.1 0.1 151.031 -12.3144 -29.0245 3.112850.1 0.2 120.232 -2.53284 -8.40095 3.33480.1 0.3 136.481 -0.33173 -22.4462 3.5980.1 0.4 184.16 -18.2706 -54.0658 2.516960.1 0.5 140.445 -6.99704 -21.2255 2.42020.1 0.6 127.981 0.319132 -29.8315 3.113170.1 0.7 106.174 -0.398859 -39.5156 3.974380.1 0.8 105.867 -20.1589 -13.4927 11.64880.1 0.9 117.294 -11.8907 -25.5828 4.971910.1 1 79.457 -1.42722 -140.482 0.7264930.1 1.1 94.2203 -2.31433 -11.9207 4.71119

那么可以用下面的代码来读取该文本文件:

fid=fopen('TIM_Grid_Data.txt','r');best_data=[];while

1    tline=fgetl(fid);    if

~ischar(tline),break;end    tline=str2num(tline);    best_data=[best_data;tline];

end

fclose(fid);

这样文本文件中的内容就读入到了best_data中了。

二、写入文本文件

思路:

1、用fopen打开一个文件句柄,但要用“w+”或“r+”等修饰符,具体参看help fopen

2、用fprintf写入数据

3、用fclose来关闭文件句柄

比如下面的程序:

fid=fopen('Data.txt','a+');fprintf(fid,'Hello,Tim\r\n');fprintf(fid,'http://blog.sina.com.cn/pengtim');a=rand(1,10);fprintf(fid,'%g\r\n',a);fclose(fid);

打开Data.txt文件,可以看到:

Hello,Timhttp://blog.sina.com.cn/pengtim0.655741

0.03571170.8491290.9339930.6787350.757740.7431320.3922270.6554780.171187

所以,用MATLAB来进行操作文本文件是不是很简单啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB编程源代码文件大全集合【约1000+】 MATLAB代码MATLAB源码大集合220MB上千个源码文件: 2013全国大学生数学建模B题matlab代码.rar 802.11a OFDM MATLAB仿真代码!(推荐).rar MATLAB DCT水印源程序代码.rar MATLAB GUI 实例.rar matlab GUI实例.rar MATLAB GUI实现动态画图曲线的源程序代码.rar matlab.rar matlab7.0从入门到精通-光盘程序.rar Matlab_车牌识别.zip MATLAB中colorbar的设置 源程序代码.rar matlab中文字符的识别代码.rar MATLAB中的基本语法和语句示例代码.rar MATLAB使用欧拉Euler法求解微分方程组 源程序代码.rar MATLAB光通过三稜镜色散动画.rar Matlab十大算法源代码.rar Matlab图像处理与界面编程宝典源码.rar matlab图像处理代码.rar MATLAB图像处理实现直线识别(拟合角平分线).rar MATLAB图像处理实现螺纹识别 源程序代码.rar MATLAB图像配准程序.rar MATLAB在数学建模中的应用(上下 源程序).rar MATLAB夜间车牌识别程序.rar MATLAB实现不同插值方法的GUI界面设计 源程序代码.rar MATLAB实现偏微分方程的差分计算 源程序代码.rar MATLAB实现图像去噪 滤波 锐化 边缘检测.rar matlab实现图像拼接的代码.rar MATLAB实现学生成绩查询系统 源代码程序(1).rar MATLAB实现学生成绩查询系统 源代码程序.rar MATLAB实现灰度预测模型的源代码.rar MATLAB实现线性拟合和相关系数 源程序代码.rar matlab实现视频中动态目标跟踪.rar matlab实用程序300例.rar MATLAB寻找素数的源程序代码.rar MATLAB小波分析—张德丰(代码).rar MATLAB建模 人口增长模型 源程序代码.rar MATLAB文字连通域源程序代码.rar MATLAB智能算法30个案例分析 源代码.7z MATLAB求解非线性方程组 fsolve源程序代码.rar MATLAB生成Gif图片程序源代码.rar MATLAB绘制 维维安尼Viviani曲线 源代码程序.rar MATLAB计算粒子速度分布 源程序代码.rar MATLAB设计的简单滤波器程序源代码.rar Matlab语音信号滤波程序.rar matlab通信工程仿真源码(张德丰等编著).zip Matlab金融程序汇总.rar MATLAB霍夫曼Huffman编码译码GUI界面设计 源程序代码.rar mean+shift+tracking.rar MIMO-OFDM(simulinkANDmatlab).rar Motion_Detection.rar music_spectrum.rar OpenSURF_version1c.zip targettrackingusingkalman.rar VC++图像处理与识别实用案例精选.rar zhuantai.rar zxymath_matlab_program.doc 《MATLAB 7.0编程基础基础》源程序.rar 《MATLAB 神经网络43个案例分析》源代码&数据.rar 《MATLAB程序设计教程》源代码-2660.rar 《图像分割中常用的水平集方法matlab代码》.zip 【MATLAB GUI设计学习手记】源代码.rar 国外的车牌识别程序.rar 图像分割算法的Matlab源程序matlab.zip 图像压缩.rar 图像处理.rar 图像处理源程序.rar 图像复原matlab程序.rar 图像形态学处理.rar 图像融合+源代码+matlab.rar 图像融合程序代码.rar 图像识别.rar 图像配准算法.rar 图论算法及其MATLAB实现(全书+源代码).zip 基于Matlab的多功能通信信号源仿真.rar 基于仿射变换的数字图象置乱技术 MATLAB源程序代码.rar 完整的QPSK-MSK-QAM-OFDM调制解调m程序.rar 实验心得总结.rar 拉格朗日插值 MATLAB源程序代码.rar 指纹识别的matlab源码.rar 指纹识别的matlab源码.zip 掌握和精通matlab之gui设计.rar 数字信号处理. 理论、算法与实现(胡广书)的MATLAB程序.rar 文字图像识别.rar 牛顿Newton插值 MATLAB源程序代码.rar 现代通信系统(MATLAB版) 源码.zip 用MATLAB对两幅图片进行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值