matlab怎样从文本txt文件中读入数据到矩阵
0:00.000 -0.750 -0.620
0:00.003 -0.750 -0.620
0:00.006 -0.750 -0.620
0:00.008 -0.750 -0.620
0:00.011 -0.750 -0.620
0:00.014 -0.750 -0.620
0:00.017 -0.750 -0.620
0:00.019 -0.760 -0.620
想把第一列数据作为文本赋给一个矩阵
用a=load('1.txt');
和
importdata('1.txt')
读出都是
以下结果
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7500 -0.6200
0 -0.7600 -0.6200
第一列变为0了,求给出完整代码? 展开
% 打开文件(注意修改文件名)
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]) % 读取指定行列区间的数据
可以使用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;