lachance 发表于 2011-3-11 11:33

如何只取出CELL ARRAY中的数字部分?

本帖最后由 lachance 于 2011-3-11 11:33 编辑

如何只取出CELL ARRAY中的数字部分?

例子如下
data = {1 4 'ab' 7; 2 5 'cd' 8; 3 6 'ef' 9};

得到数字部分的MATRIX

1 4 7
2 5 8
3 6 9

另外怎么得到CELL ARRAY的中最后一个CELL的INDEX POSITION,
也就是9所在CELL ARRAY的位置?

qibbxxt 发表于 2011-3-11 14:50

>> data = {1 4 'ab' 7; 2 5 'cd' 8; 3 6 'ef' 9};
>> g=cell2mat(reshape(data(cellfun(@(x)isnumeric(x),data)),size(data,1),[]))

g =

   1   4   7
   2   5   8
   3   6   9

>> ind = max(find(cellfun(@(x)isnumeric(x),data)))

ind =

    12
>> = find(cellfun(@(x)isnumeric(x),data),1,'last')

indR =

   3


indC =

   4

lachance 发表于 2011-3-12 00:30

教研室主任的水平果真不同一般.
不好意思,水平太差, 有几个地方不懂,请解释一下好吗?
请问
g =.... data(cellfun(@(x)isnumeric(x),data)),size(data,1),[]) 这里是在做啥, cellfun(@(x)... 是做啥的?

这个是什么目的,为什么要这么做? max(find(cellfun(@(x)isnumeric(x),data))),

好像主要还是不懂cellfun(@(x)isnumeric(x),data)) 这个函数的意思.
{:{19}:}{:{19}:}

ChaChing 发表于 2011-3-13 14:44

回复 3 # lachance 的帖子

不清楚, 可以跟我一样, 一步一步执行...
data = {1 4 'ab' 7; 2 5 'cd' 8; 3 6 'ef' 9};
%g=cell2mat(reshape(data(cellfun(@(x)isnumeric(x),data)),size(data,1),[]))
d1=cellfun(@(x)isnumeric(x),data)%Apply function to each cell in cell array
d2=data(d1)
d3=reshape(d2,size(data,1),[])
g=cell2mat(d3)
%ind=max(find(cellfun(@(x)isnumeric(x),data)))
e1=cellfun(@(x)isnumeric(x),data)
e2=find(e1)
ind = max(e2)
% = find(cellfun(@(x)isnumeric(x),data),1,'last')
= find(d1,1,'last')

lachance 发表于 2011-3-14 09:24

非常感谢 两位的相助{:3_53:}
页: [1]
查看完整版本: 如何只取出CELL ARRAY中的数字部分?