声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2512|回复: 4

[编程技巧] 如何只取出CELL ARRAY中的数字部分?

[复制链接]
发表于 2011-3-11 11:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 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的位置?
回复
分享到:

使用道具 举报

发表于 2011-3-11 14:50 | 显示全部楼层
  1. >> data = {1 4 'ab' 7; 2 5 'cd' 8; 3 6 'ef' 9};
  2. >> g=cell2mat(reshape(data(cellfun(@(x)isnumeric(x),data)),size(data,1),[]))

  3. g =

  4.      1     4     7
  5.      2     5     8
  6.      3     6     9

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

  8. ind =

  9.     12
  10. >> [indR,indC] = find(cellfun(@(x)isnumeric(x),data),1,'last')

  11. indR =

  12.      3


  13. indC =

  14.      4
复制代码

评分

1

查看全部评分

 楼主| 发表于 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)) 这个函数的意思.

发表于 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)
%[indR,indC] = find(cellfun(@(x)isnumeric(x),data),1,'last')
[indR,indC] = find(d1,1,'last')
 楼主| 发表于 2011-3-14 09:24 | 显示全部楼层
非常感谢 两位的相助
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 11:42 , Processed in 0.055192 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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