请问如何批量获取matlab元胞数组非空元素中符合条件的内容?
例如一个n×n的元胞数组,只有部分元素有内容,非空元素都是m×3的矩阵,各元素矩阵行数m不一定相同,现在想把非空元素的矩阵第3列提取出来,组成一个向量,请问有什么好办法?...
例如一个n×n的元胞数组,只有部分元素有内容,非空元素都是m×3的矩阵,各元素矩阵行数m不一定相同,现在想把非空元素的矩阵第3列提取出来,组成一个向量,请问有什么好办法?谢谢。
展开
2个回答
展开全部
参考代码
>> 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条语句:
主要用到了cellfun和cat两个函数以及匿名函数,请自行查阅文档好好体会一下,有困难再追问。
顺便提醒楼上一下,元胞数组是MATLAB中很有特色、实用价值很大的一种数据类型,你用MATLAB很多年都没用过,我只能说为你感到惋惜。这种数据类型从十几年前5.0版刚出来我就觉得非常有用,这么多年来用了很多,尤其是是7.x版引入了cellfun函数以及匿名函数之后,用起来就更加方便了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询