请问如何批量获取matlab元胞数组非空元素中符合条件的内容?

 我来答
尉迟谷雪随木
2019-04-17 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:30%
帮助的人:785万
展开全部
参考代码
>>
c={zeros(2,3)
[]
magic(3);
[]
ones(4,3)
pascal(3)}
c
=
[2x3
double]
[]
[3x3
double]
[]
[4x3
double]
[3x3
double]
>>
idx=cellfun(@(x)~isempty(x),c,'UniformOutput',true);
>>
c1=cellfun(@(x)x(:,3),c(idx),'UniformOutput',false)
c1
=
[2x1
double]
[4x1
double]
[3x1
double]
[3x1
double]
>>
cat(1,c1{:})
ans
=
0
0
1
1
1
1
6
7
2
1
3
6
说明
一共4条语句:
第1句构造一个简单的测试用例
第2句筛选非空单元;
第3句提取非空单元的第三列;
第4句将提取的内容拼接为一个列向量
主要用到了cellfun和cat两个函数以及匿名函数,请自行查阅文档好好体会一下,有困难再追问。
顺便提醒楼上一下,元胞数组是MATLAB中很有特色、实用价值很大的一种数据类型,你用MATLAB很多年都没用过,我只能说为你感到惋惜。这种数据类型从十几年前5.0版刚出来我就觉得非常有用,这么多年来用了很多,尤其是是7.x版引入了cellfun函数以及匿名函数之后,用起来就更加方便了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式