% 打开文件(注意修改文件名)
fid = fopen('480684994.txt','rt');
if fid == 0, return, end
% 读文件直到结束
while ~feof(fid)
% 每次读入一行
s = fgetl(fid);
% 以空格作为数据项的分隔符
反过来Matlab读写矩阵到文本文件
批量读出文本中的数据常用的函数是importdata(),可以分别导入数据中的字符和数值数据,并可以跳过指定行等,importdata很强大,不仅可以操作文本数据,同样可以读取二进制数据,比如图像。
简单介绍下其用法:
A = importdata(filename,delimiterIn,headerlinesIn)
函数按特定分隔符delimiterIn,跳过头headerlinesIn行读取数据,这两个参数默认可以缺省。
这里特别要讲一组方便的文本批量读写操作函数(Read/Write matrix from/to ASCII-delimited file),也即dlmread和dlmwrite。
dlmread基本用法:
M = dlmread(filename) % 直接读取一个数值文本文件
M = dlmread(filename,delimiter) % 按特定分隔符读取一个文件
M = dlmread(filename,delimiter,R1,C1) % 从指定行列读取文件,通常可以用这种方式提过字符行
M = dlmread(filename,delimiter,[R1 C1 R2 C2]) % 读取指定行列区间的数据
以Matlab R2012b为例。
首先打开matlab;
选择current folder并加入当前路径;
选择指定的txt文件,右键,选择导入数据;
选择相应的数据类型,这里应选matrix。
具体如下图所示:
开始导入数据
导入数据
用load,textread或者importdata文本(txt)格式的文件,只能识别数据,对其中的文本无法读取。
可以使用fscanf或者sscanf的方式读取,
思路为:定义cell矩阵,先全部以字符的方式读入,再将其中的数字转换为数据格式。
代码如下:
m=8;n=3;
data=cell(m,n);%定义cell矩阵,存储文件内容
fid=fopen('test.txt','r');%以只读方式打开文件
for i=1:m
for j=1:n
data{i,j}=fscanf(fid,'%s',[1,1]);%以字符方式读取每个值,遇空格完成每个值的读取
end
end
fclose (fid);
for i=1:m
for j=2:n
data{i,j}=str2double(data{i,j});%将文本格式转为数字格式
end
end
str=cell(m,1);用于存储data的第一列
for i=1:m
str{i}=data{i,1};
end
回复中有很多是读文本的,读数据文件的例子,参考下,有问题欢迎指正:
打开文件:
fid = fopen('psb_data11_12.txt','r');
直接读,也就是知道个数(数据形状)
% sizeA = [510 1];
% data = fscanf(fid,'%f', sizeA);
% fclose(fid);
不知道数据有多少个,一直读到最后一个:
% if ( fid == 0)
% return
% end
%
% k = 0;
% while ~feof(fid)
% curr = fscanf(fid,'%f',1);
% if ~isempty(curr)
% k = k+1;
% data(k) = curr;
% end
% end
% fclose(fid);
% clear k;
可以试试dlmread函数