matlab读入不规则txt文本问题.

我想在matlab中读入一个txt文档,matlab直接打开的数据格式如下图1,其中包含文字和数字,数字打开后每一列都有一定的空格数量。我的读入代码为:clc;clear... 我想在matlab中读入一个txt文档,matlab直接打开的数据格式如下图1,其中包含文字和数字,数字打开后每一列都有一定的空格数量。我的读入代码为:clc;clear all;close all;[FileName,PathName]=uigetfile('*.txt','Select a OutputData File'); %选择文件File=strcat(PathName,FileName); %获取文件路径和名称input_struct=importdata(FileName);%读入数据[temprow,tempcol]=size(input_struct.data);%获取读入数据的行列数InPutData=input_struct.data;%将input_struct结构体中的数据付给InPutData但是其中存在一定的问题:1、数据位数相同时,读出数据正确;如图2;2、当数据有效位数较少时,即空格数量不同,读入出现错误;原始数据本身有24列,此时出现25列,如图3-43、当数据位数不同较多时,更为严重,原本24列数据其中包含了8列0值,读入后出现32列,如图5-6非常希望有高人指导,数据量很大,需要批量处理,想从代码本质上解决问题的存在。

图1.原始数据直接matlab打开

图2.当txt中数据位数都相同时读入正确

图3.其中98.72较其他少1位有效数字

图4.由于98.72位数不同引起的多一列,后面数值串位

图5.另一个原始数据中包含了0列

图6.读入后出现的错误更为明显
展开
 我来答
百度网友a26da9d
2013-08-07 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:30.8万
展开全部
这事很好办,我弄过,函数的问题,
很简单,用textscan
假设你的文件叫a.txt

代码如下,
fid=fopen('a.txt');
C = textscan(fid,'%n','HeaderLines',2, 'Delimiter',' ');
只要97.2后面有空格就没有问题了。

然后reshape就行了。

你试试,如果有问题我再解答,希望采纳。
lhmhz
高粉答主

2013-08-01 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17018

向TA提问 私信TA
展开全部
只要保证每列数中的个数都相等,应该可以读出来。能把数据传给看一看吗?lhmhz@qq.com
追问
数据已发,请您看看,非常感谢
追答
可能程序导出的数据格式有点问题,当处理值为0,产生多余的空格。使得在Matlab环境下转换出现了溢出问题,即NaN。建议用Excel导入txt后,删除多余的空格,保存后用命令读出数据。
clc;clear all;close all;
[FileName,PathName]=uigetfile('*.txt','Select a OutputData File'); %选择文件
File=strcat(PathName,FileName); %获取文件路径和名称
cd(PathName);
input_struct=importdata(FileName);%读入数据
A=input_struct.data;
if length(A(1,:))==24
[temprow,tempcol]=size(input_struct.data);%获取读入数据的行列数
InPutData=input_struct.data;%将input_struct结构体中的数据付给InPutData
else
disp('数据有问题,请用Excel处理')
end
*****
FileName,PathName]=uigetfile('*.xls','Select a OutputData File'); %选择文件
File=strcat(PathName,FileName); %获取文件路径和名称
cd(PathName);
input_struct=importdata(FileName);%读入数据
[temprow,tempcol]=size(input_struct.data);%获取读入数据的行列数
InPutData=input_struct.data;%将input_struct结构体中的数据付给InPutData
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5f5208237
2013-08-02 · TA获得超过2573个赞
知道小有建树答主
回答量:763
采纳率:50%
帮助的人:756万
展开全部
input_struct=importdata(FileName,' (你的空格数)');
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式