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),‘’)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值