matlab读取txt文件中的数据存为矩阵
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab读取txt文件中的数据存为矩阵相关的知识,希望对你有一定的参考价值。
将文件中的数据存到一个矩阵A中。从facet normal到endfacet都是一样的,每个文件有很多个这样的循环。
A=[-1,0,0;
0,100,100;
0,100,0;
0,0,0;]
1、打开一个txt文件,会发现他既有字符又有数值。
2、此时将字符全部删除,只留下有用的数据数值。
3、记住该文件夹的地址,一会要作为路径用于matlab读取。
4、此时使用一个textread函数,函数内部代入刚才的txt文件路径。
5、textread函数会把这些数据读成1为向量。我们将其分为两列,用x和y代表,保存为矩阵。
参考技术A 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等。缺省数据精度为uchar,即无符号字符格式。
例6.8 将一个二进制矩阵存入磁盘文件中。
>> a=[1 2 3 4 5 6 7 8 9];
>> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件
fid =
3 %其值大于0,表示打开成功
>> fwrite(fid,a,'double')
ans =
9 %表示写入了9个数据
>> fclose(fid)
ans =
0 %表示关闭成功
2)读二进制文件
fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:
[A,COUNT]=fread(fid,size,precision)
说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。
3、文本文件的读写操作
1)读文本文件
fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:
[A,COUNT]=fscanf(fid,format,size)
说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。
2)写文本文件
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';
>> fid=fopen('d:\char1.txt','w');
>> fprintf(fid,'%s',a);
>> fclose(fid);
>> fid1=fopen('d:\char1.txt','rt');
>> fid1=fopen('d:\char1.txt','rt');
>> b=fscanf(fid1,'%s')
b =
string
matlab读txt文件
fid=fopen('fx.txt','r'); %得到文件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件号1的数据读到f中。其中f是[12 90]的矩阵
%这里'%f %f'表示读取数据的形势,他是按原始数据型读出
fclose(fid);
%关闭文件
另外有的txt文件还可以用load来打开
其语句为
f=load('fx.txt)
一个写入txt文件的小例子:
N=100;
R=rand(1,N);
fid = fopen('tt.txt','wt');
for k=1:N;
p=num2str(R(k));
fprintf(fid,'%c',p);
fprintf(fid,'%c\n',' ');
end
fclose(fid); 参考技术B fid=fopen('文件名','r');
s=fread(fid,inf,'uint8=>char')';%读取文件内容
fclose(fid);
str=regexp(s,'([-+]?\\d+)(\\.)?(\\d*)([eE][-+]?\\d+)?','match');%匹配数值的字符串
data=cellfun(@str2num,str);%字符串转为数值存在data中
A=reshape(data,[3 4 length(data)/12]);%整形
A=permute(data,[2 1 3]);
最后A是个三维矩阵,
A(:,:,1)是第一组数据,
A(:,:,2)是第二组数据。。。。以此类推
在倒数第三句中data已经是所有数据组成的行向量
你可以根据自己的需要,让它变形为你所需要的数据
本回答被提问者和网友采纳 参考技术CTo read file.txt, the required commands are [fopen], [fscanf].
fopen: is used to open the file you expected.
fscanf: is used to scan the information inside the file you expected to read.
The following content is the step-by-step instruction. Just ensure both data file and code file in the same directory, which could minimize the error for your code.
Create the file called "data.txt" including the following information
2 3.3 4.4
3 5.5 6.6
2. Write a code to fetch the information inside data.txt and store them into a matrix A
fileID = fopen( 'data.txt','r' );% 'data.txt' is the file name
% 'r' means read
format = '%d %f %f';
% The data information has two different types:
% d for integer based 10
% f for Floating-point number
sizeA = [3 Inf];
% 3 for only 3 lines
% Inf for read-to-end of line
A = fscanf( fileID, format, sizeA );
% save the information into A as the matrix format
fclose( fileID ); 参考技术D 你把数据放入到txt文档中。例如A=[数据]
在matlab中输入文件名,就会生成变量A,当中存储你的数据
在matlab中怎么读取txt格式的数据文件
我有一个文本格式的数据文件具体如下:
*code1 换行 1,2,3 换行4,5,6 换行*code2换行7,8,9 也就是一个标题下面就是一个矩阵数据,但注意数据之间有逗号,我想通过matlab将每个标题下数据读取到一个数组中,怎么办?我在网上查的方法不管用,哪位编程高手帮忙解决下,小弟不胜感激!
一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 。
例如test.txt文件,内容为“17.901 -1.1111 33.045
17.891 -1.1286 33.045 17.884 -1.1345 33.045” 可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
二、中英文和数据如test1.txt
“你好 欢迎来到 振动论坛
vib.hit.edu.cn 1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555”
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。
方法一:
file/import data....../next/finish >> whos
Name Size Bytes Class data 5x4 160 double array textdata 4x1 300 cell array Grand total is 54 elements using 460 bytes >> data data =
1 11 111 1111 2 22 222 2222 3 33 333 3333 4 44 444 4444 5 55 555 5555 >> textdata textdata =
'你好'
'欢迎来到' '振动论坛'
'vib.hit.edu.cn'
方法二:
[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'
因以字符串的形式读入,所以有''。 参考技术A 首先Matlab是可以解决这个问题,这里有哥们写了一些code,我觉得太麻烦了。
给你推荐一个简单办法,进入txt 按CTRL+H 用空格去替代‘,’。问题很简单就解决了。
假设你是三列数据,数据从123.txt第n行开始。读取数据的Matlab格式如下 :
[a1 a2 a3]=textread('123.txt','%f %f %f','headerlines',n-1);本回答被提问者采纳 参考技术B 可以直接用importdata这个函数啊。
>>importdata('a.txt') 参考技术C 把数据文件发到matlabguy@163.com,我看一下。
以上是关于matlab读取txt文件中的数据存为矩阵的主要内容,如果未能解决你的问题,请参考以下文章