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

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

参考代码

>>

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很多年都没用过,我只能说为你感到惋惜。这种数据类型从十几年前50版刚出来我就觉得非常有用,这么多年来用了很多,尤其是是7x版引入了cellfun函数以及匿名函数之后,用起来就更加方便了。

你可以简单的理解idx是代表实例的编号,比如你阵列10个特征,那么第一个实例(原始特征)的idx值就是0,第二个就是1,第三个是2,以此类推第10个就是9

假如你在阵列的时候设定关系memb_v=10+idx1,那么第二个就是11,第三个就是12,第10个就是19

可以用变量来代替[-3],只需要在代码中将[-3]替换为[Idx]即可。

你可以将以下代码:

"=VLOOKUP(C[-3],'[清单xlsx]1月'!C2:C4,3,0)"

修改为:

"=VLOOKUP(C[" & Idx & "],'[清单xlsx]1月'!C2:C4,3,0)"

这样就可以使用Idx变量来代替[-3]了。

以上就是关于请问如何批量获取matlab元胞数组非空元素中符合条件的内容全部的内容,包括:请问如何批量获取matlab元胞数组非空元素中符合条件的内容、proe阵列中IDX*具体是指什么呢、vba中vlookup求教等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10115747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存