matlab怎样从文本txt文件中读入数据到矩阵

数据格式为0:00.000-0.750-0.6200:00.003-0.750-0.6200:00.006-0.750-0.6200:00.008-0.750-0.620... 数据格式为
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了,求给出完整代码?
展开
 我来答
大野瘦子
高粉答主

推荐于2019-10-19 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:32.3万
展开全部

% 打开文件(注意修改文件名)

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

百度网友fc027fc
推荐于2017-09-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3160
采纳率:83%
帮助的人:753万
展开全部

以Matlab R2012b为例。

  1. 首先打开matlab;

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

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

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

具体如下图所示:

  1. 开始导入数据

  2. 导入数据


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘阳升
推荐于2017-09-12 · TA获得超过2878个赞
知道小有建树答主
回答量:921
采纳率:86%
帮助的人:378万
展开全部
用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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhh0216000783
2019-11-13
知道答主
回答量:15
采纳率:0%
帮助的人:3641
展开全部
回复中有很多是读文本的,读数据文件的例子,参考下,有问题欢迎指正:

打开文件:
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0744c74
2019-02-01
知道答主
回答量:1
采纳率:0%
帮助的人:763
展开全部
可以试试dlmread函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式