读文件:
 (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.
Start
0 1 2
1 2
1 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 2
1 2
1 2 3 4
End.
运行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 2
1 2 3
1 2 3
End.
 
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 2
1 2
1 2 3
End.
 
结果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
    end
end
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.11285
0.1 0.2 120.232 -2.53284 -8.40095 3.3348
0.1 0.3 136.481 -0.33173 -22.4462 3.598
0.1 0.4 184.16 -18.2706 -54.0658 2.51696
0.1 0.5 140.445 -6.99704 -21.2255 2.4202
0.1 0.6 127.981 0.319132 -29.8315 3.11317
0.1 0.7 106.174 -0.398859 -39.5156 3.97438
0.1 0.8 105.867 -20.1589 -13.4927 11.6488
0.1 0.9 117.294 -11.8907 -25.5828 4.97191
0.1 1 79.457 -1.42722 -140.482 0.726493
0.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

'r'

Open file for reading.

'w'

Open or create new file for writing. Discard existing contents, if any.

'a'

Open or create new file for writing. Append data to the end of the file.

'r+'

Open file for reading and writing.

'w+'

Open or create new file for reading and writing. Discard existing contents, if any.

'a+'

Open or create new file for reading and writing. Append data to the end of the file.

'A'

Open file for appending without automatic flushing of the current output buffer.

'W'

Open file for writing without automatic flushing of the current output buffer.

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,Tim
http://blog.sina.com.cn/pengtim0.655741
0.0357117
0.849129
0.933993
0.678735
0.75774
0.743132
0.392227
0.655478
0.171187

写文件:

Matlab之文件读写的更多相关文章

  1. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  2. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  3. C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind

    由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...

  4. mat文件读写

    一起来学演化计算-mat文件读写 觉得有用的话,欢迎一起讨论相互学习~Follow Me Matlab读取和保存mat文件数据 在matlab命令行中输入save 变量名a,将a变量保存在新生成的a. ...

  5. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

  6. Matlab 读取文件夹中所有的bmp文件

    将srcimg文件下的bmp文件转为jpg图像,存放在dstimg文件夹下 str = 'srcimg'; dst = 'dstimg'; file=dir([str,'\*.bmp']); :len ...

  7. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  8. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  9. Android 文件读写

    一.分类 文件读写作为Android四大数据存储方式之一,又分为内部存储和外部存储两种: (1)内部存储(Internal storage): 总是可用. 文件默认情况存储在/data/data/包名 ...

随机推荐

  1. python __init__.py

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

  2. memcached Logging

    For reasons now relegated to history, Spy has its own logging implementation. However, it is compati ...

  3. linux tar.gz zip 解压缩 压缩命令

    http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...

  4. hdu 5286 How far away ? tarjan/lca

    How far away ? Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  5. java list三种遍历方法性能比較

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  6. Mongodb集群配置(sharding with replica set)

    转自:http://blog.csdn.net/zhangzhaokun/article/details/6269514 前言 最近在研习MongoDB集群,找到一个不错的例子,加了几句,按照自己的理 ...

  7. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载

    原文地址:http://blog.sina.com.cn/s/blog_49be4d570100yvv1.html 1.下载mongodb,可以通过下面2中方法安装. (1)官网下载yum源后直接安装 ...

  8. chrpath工具使用

    转载:http://www.cnblogs.com/kungfupanda/p/3708799.html chrpath是用来改变程序的depends lib 的搜索路径的,比如我们一般使用$ldd  ...

  9. Sql 使用备份还是使用脚本

    对sql使用并不熟悉,但是通过项目接触总结出的经验 什么样的场景下选择使用脚本或者备份: 1:当需要创建相关的库的时候使用脚本 2:当需要还原至某个时间点的状态的或者前进至某个版本的数据库的时候就使用 ...

  10. [Java] Servlet 3 —— 用Java生成GET/POST请求

    Servlet是SUN指定的Java服务器端编程规范,用以处理来自客户端的请求,处理并做出响应的一套基础API.Servlet是运行在 Servlet容器中的Java小程序,容器运行在服务器端,服务器 ...