最佳答案
22 条回复
怎么会呢? >> C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]} C = [ 1] [1x3 double] [2x1 double] [2x3 double] >> M = cell2mat(C) M = 1 2 3 4 5 6 7 8 9 10 11 12 >> ischar(M) ans = 0 |
eval(a{1}) |
cell2mat只能适合元胞数组是n*n维的情况,我最近也遇到了这个问题,如下的程序可能会帮到你 % 将数字字符元胞数组转化成double cell_str_list = {'1 2 3 4 5 6'; '1 3 4'}; a_str = char(cell_str_list); a_str = a_str.'; a_str = (a_str(:)).'; b_str=''; for ii=1:length(a_str) b_str=strcat(b_str,strtok(a_str(ii))); %strtok除去分隔符 end b_str; for ii=1:length(b_str) b_double(ii)=str2double(b_str(ii)); end b_double; |
正好今天也遇到了这种问题,谢谢 |
恩,这个方法很好(cell2mat) |
发信坛子里总是能找到很多好东西,真好真好 |
问题是,cell里的数据时要一样的才可用cell2mat,如果不一样呢? |
matlab要求每一行的数据长度要相同才行。 解决这个问题: 1、先把cell转变成char数组,在把他转变成数据类型。原理是转变成char之后的矩阵每行的长度是相同的。 [plain] view plaincopy str2num(char(cdata)) 2、使用cellfun函数,第一个参数传递对每个cell单元使用的函数名,第二个参数是cell名。 [plain] view plaincopy cellfun(@str2num, cdata) |
张玉宇 发表于 2015-12-9 10:53 牛!!! 谢谢你解决了我的问题 |
先提取元胞数组内的char,再用str2double,方法很赞,受教:) |
张玉宇 发表于 2015-12-9 10:53 牛,也成功的解决了我的问题,感谢感谢! |
张玉宇 发表于 2015-12-9 10:53 楼主你好,我用了你的这个给方法,原来C是2020✖2的cell值,用过E = str2num(char(C)),E变成了4040✖1的double值了,我想问一下,怎么不让列发生变化呢? |
Powered by Discuz! X3.4
© 2001-2024