700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab串联的矩阵的维度不一致 MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致...

matlab串联的矩阵的维度不一致 MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致...

时间:2019-11-04 18:10:58

相关推荐

matlab串联的矩阵的维度不一致 MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致...

MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致

今天想用matlab读取一个数据文件。用importdata读入后照例储存成了cell类型。但当我想用cell2mat将其转化为矩阵时却出现了这个问题:

错误使用 cat 串联的矩阵的维度不一致

经检查后发现,cell数组中每个元胞中存储的格式并非double,而是char数组。而且每一行char的长度不一致,从而引发了这个错误。于是我首先想到的解决思路是:

用char()函数把每个元胞的长度统一。

也确实统一了。但随后当我想用str2num()将char数组转换为数字时,却又出现了另一个问题:

y = str2num(x)返回值为空值[]

这很奇怪,于是我检查了一下我的每行字符串数组。发现它存在着古怪的格式问题。举例来说,在原始文件中数据本来是这样的:0.00

但是导入到matlab里以后就变成了了这样:0 . 0 0

数字之间存在的看似空格的空白字符导致str2num()函数无法正常使用。

在这种情况下,不得不对这些空格进行删除。但我的数据量很大,手动删除是不现实的。因此不得已使用了这个函数命令:

y = strrep(x,’ ‘,’’);

结果发现,很奇怪的是,这些空格依然存在。我自己随便编了一个字符串调用这个函数,结果证明函数是可以使用的。可见,数据中这些看似空格的空白字符实际上并非空格。经过试验,他们也不是制表符。由于时间有限,我最终并没有去确认这些空白字符到底是什么。只是简单地将字符串中其中一个空白字符赋给了一个变量作为样例。操作过程大致如下:

d = x(5);

y = strrep(x,x(5),‘’)

结果证明这样做是有效的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。