永发信息网

matlab中 元胞数组的交集,比如a={1,2,[4,15],[5,23]},b={3,2,5,[4,15],0}

答案:2  悬赏:0  手机版
解决时间 2021-12-31 09:13
这两个交集怎么求?不用for 因为那个太慢了!我数据有点大!谢谢大神指导
最佳答案
matlab里求交的函数是intersect,可惜它只能对字符串类型的元胞数组进行求交,而你这个是double类型的,所以我们的思路就是把a、b转换成字符串类型的,然后利用intersect求交,结果再转回double:
>> a = { 1, 2, [ 4 15 ], [ 5 23 ] }
a =
[1] [2] [1x2 double] [1x2 double]
>> b = { 3, 2, 5, [ 4, 15 ], 0 }
b =
[3] [2] [5] [1x2 double] [0]
>> as = cellfun( @( ai ) num2str( ai ), a, 'UniformOutput', false )
as =
'1' '2' '4 15' '5 23'
>> bs = cellfun( @( bi ) num2str( bi ), b, 'UniformOutput', false )
bs =
'3' '2' '5' '4 15' '0'
>> cs = intersect( as, bs )
cs =
'2' '4 15'
>> c = cellfun( @( ci ) str2num( ci ), cs, 'UniformOutput', false )
c =
[2] [1x2 double]
>> celldisp( c )

c{1} =

2

c{2} =

4 15
我不好说这个会不会比你用for更快,如果你对性能要求很好,就只能用和C混编的技术了,用
C写一个专门对cell数组求交的mex函数,绝对比matlab快几十倍。
全部回答
支持一下感觉挺不错的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
香港吃的贵吗
单选题盐碱地里,栽种植物不易成活的原因主要
anthropos是什么意思?
错开头的成语有哪些
对山奶牛场生活区地址在什么地方?想过去办事
去疤痕产品什么牌子好,如何选择去疤产品
防噪音耳塞真的能完全阻断噪音吗?
东南西北在五行中各属什么?
最近股票哪支股票涨势最好?
我在微信上买了几条烟,共一千多块钱的货,可
野生饲养场生活区地址在什么地方?想过去办事
单选题在一个二面角的一个面内有一点,如果它
我有压力英语怎么说
怎么做课程设计
总有一个人会改变自己,放下底线来纵容你。不
推荐资讯
下列句子中划线成语使用恰当的一项是A.10级四
为什么我在时光网给电影评论不能显示呢? 5分
成都有什么特色美食
西藏正式成为中央的一个行政区域是在A.唐朝B.
煜和什么字搭配好
我国四大平原是什么
年底是购买二手房的最好时机吗
聊什么什么慰
最简单的图像篡改检测方法有哪些
潮汕话去吃饭怎么说
冰箱有没有反开门的 就是门向左开的?
正规的用英语怎么说
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?