[Matlab]从细胞型转换为矩阵From cell to matrix
比如说你有一个细胞型文件,举个例子:
然
后呢,你想把这个细胞型文件转成矩阵,数据类型变成double,最简单的思维方式就是cell2mat,先转成string,然后再str2num就好
了。很可惜,在matlab里面,cell2mat是默认要求你的矩阵的大小是统一的,可是这里呢,‘8’的长度是1,‘14’的长度是2,所以转换的时
候就会出问题,就会出现错误提示。
那么怎么办呢,Matlab官方论坛真是一个神一般的地方,终于不负我也。
方法No.1:
没想到这么简单的一个函数char居然有这么神的功能,Matlab的函数真是深不可测。
方法No.2:
注意!!神一般的函数cellfun又出现了!!
说
起这个CELLFUN函数,那真是无敌神函数啊,每当我面对细胞型数据万分苦恼无处下嘴之际,cellfun函数总能够挺身而出,用各种神奇的输入解决看
似复杂的问题,各种困难灰飞烟灭在谈笑之间。我开始还以为这个函数就是“cell
fun”,意思是细胞型数组很好玩,我还想着Matlab的开发者们真是超级有学术幽默精神,科研之余还不忘laugh我等屌丝一把;后来才知道原来是
cell function的简称,真是羞愧到无地自容,真是没文化太可怕啊。
>> a={\'8\';\'8\';\'8\';\'14\';\'21\';\'25\';\'27\';\'31\'} a = \'8\' \'8\' \'8\' \'14\' \'21\' \'25\' \'27\' \'31\' |
>> cell2mat(a) ??? Error using ==> cat CAT arguments dimensions are not consistent. Error in ==> cell2mat at 89 m{n} = cat(1,c{:,n}); |
那么怎么办呢,Matlab官方论坛真是一个神一般的地方,终于不负我也。
方法No.1:
str2num(char(cell)) |
方法No.2:
注意!!神一般的函数cellfun又出现了!!
cellfun(@str2num, cell) |
来自http://blog.163.com/6_mao/blog/static/632713152012318111738729/