Matlab 读写入txt文件
Matlab 读写入文件txt
转自:http://blog.sina.com.cn/s/blog_9fcf6ca30101htef.html
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.
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
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 读写入txt文件相关推荐
- 用MATLAB将矩阵数据写入txt文件中,打开乱码原因
MATLAB将数据写入txt文件中乱码的原因,是将数据按照二进制文件写入txt文件,所以打开会出现乱码的情况,只需要把 fid1=fopen('piture.txt','w'); 换成,就可以了 fi ...
- matalb读取txt文件以及将数据写入txt文件
matlab读取txt文件 三个文件a.txt,b.txt,d.txt 1.load load只能读取ascii文件,如果文件中有不同数据类型将出错. 2.importdata 3.textread ...
- Matlab循环读取txt文件并对其中数据进行计算最后导出为excel
废话不多说,先上代码. clear; clc;for i = 1:30 %文件个数filename = ['test (' num2str(i) ')' '.txt']; %文件名称delimiter ...
- c++读取和写入TXT文件的整理
c++读取和写入TXT文件的整理 #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文 ...
- c++读取和写入TXT文件的整理 1
c++读取和写入TXT文件的整理 #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文 ...
- matlab中如何读写txt,Matlab中读取txt文件的几种方法
Matlab中读取txt文件的几种方法 matlab读取文本文件的几种函数: 1.load--适合读取纯数据文本: 2.importdata--只读取数据,自动省略数据格式前后的字符,超大文件不适合: ...
- Java读取txt文件和写入txt文件
弱弱问一句: 像这种代码都是网上找的,自己不理解,也不记得,本人应该对这样的代码了解到什么程度呢? package com.nickwong.code;import java.io.*;/*** Cr ...
- java读取txt文件函数_Java读取txt文件和写入txt文件的简单实例
写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂! package edu.thu.keyword.test ...
- python读取txt文件写入-python 读取、写入txt文件的示例
写入文件 使用open()函数和write()函数 但是有两种写法,分别是'a'和'w' 'a' 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,会接着已有的内容的后面写入 with ope ...
最新文章
- c语言里的多参数吗,C语言中不定参数的实现
- Java 第三周总结
- java 调度quartz,java quartz任务调度
- linux 内核代码构架图
- 四川大学金融转计算机,[请教]川大和西财哪个金融系好?!
- 将XML文件数据插入到数据库中
- 北京国家开放大学计算机学院,李继先
- 近期的技术问题让云供应商进行预设加密
- IDEA集成MAVEN 报错
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(二)
- C++网易云课堂开发工程师-操作符重载
- 计算机网络基础简答题
- .NET软件授权管理解决方案Eziriz .NET IntelliLock控件详细介绍
- 蓝颜知己的伤感空间日志发布:想你,是一种,刻骨铭心的痛
- 在windows下使用docker做本机linux环境系统测试
- 《保卫萝卜》分析续——地图构成
- python 全栈开发,Day43(python全栈11期月考题)
- Aria2高速下载利器 带你冲破百度网盘重重束缚
- 运营干货:虾皮店铺装修怎么做?
- 织梦cms模板下载:集团企业通用织梦模板