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]) % 读取指定行列区间的数据

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-27

以Matlab R2012b为例。

    首先打开matlab;

    选择current folder并加入当前路径;

    选择指定的txt文件,右键,选择导入数据;

    选择相应的数据类型,这里应选matrix。

具体如下图所示:

    开始导入数据

    导入数据


第2个回答  推荐于2017-09-12
用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本回答被提问者采纳
第3个回答  2019-11-13
回复中有很多是读文本的,读数据文件的例子,参考下,有问题欢迎指正:

打开文件:
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;
第4个回答  2019-02-01
可以试试dlmread函数