查看: 57|回复: 4|关注: 0
打印 上一主题 下一主题

[已解决] 利用cell2mat转换胞组至矩阵时出错。

[复制链接]

新手

29 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
本帖最后由 zxdghz 于 2019-9-24 10:15 编辑

使用64位R2018b
目标是将从excel导出的胞组B
转换为矩阵BBnc,如图
于是想到利用cell2mat指令,结果报错
反复做一些小实验后发现,应该是原胞组中存在形如5.,15.,-90.,-.161的数据,使得直接转换时存在数据类型不一致的问题(?初步这么觉得)。在这种情况下,能做一些什么预处理来解决或者通过其他途径完成转换吗?
附件为B胞组和BBnc矩阵 BBnc.mat (52.06 KB, 下载次数: 1) B.mat (220.29 KB, 下载次数: 1)





新手

11 麦片

财富积分


050


1

主题

5

帖子

1

最佳答案
2#
发表于 8?小时前 | 只看该作者
a={'1' '1.2';'-0.1' '5'}
b=char(a)
c=str2num(b)
hang=length(a(:,1));
lie=length(a(:,1));
reshape(c,hang,lie)

先char再str2num然后reshape应该可以

MATLAB 基础讨论
版块优秀回答者

入门

73 麦片

财富积分


50500


0

主题

68

帖子

15

最佳答案
3#
发表于 8?小时前 | 只看该作者 |此回复为最佳答案
元胞B里存的文本,你自己试试cell2mat(B(1,:))就能明白为啥维度不一致了……

改用
B1=cellfun(@str2double,B);

新手

29 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
4#
?楼主| 发表于 6?小时前 | 只看该作者
alvinlau 发表于 2019-9-24 12:16
元胞B里存的文本,你自己试试cell2mat(B(1,)就能明白为啥维度不一致了……

改用

冒号表示省略列吗?所以cell2mat(B(1,:))就是针对B的第一整行吗?

MATLAB 基础讨论
版块优秀回答者

入门

73 麦片

财富积分


50500


0

主题

68

帖子

15

最佳答案
5#
发表于 5?小时前 | 只看该作者
zxdghz 发表于 2019-9-24 14:12
冒号表示省略列吗?所以cell2mat(B(1,)就是针对B的第一整行吗?

表示整行/列,matlab的索引先行后列,所以B(1,:)表示取B的第1行所有列…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表