matlab 删除结构中,删除空结构字段Matlab

使用循环或

arrayfun来确定哪些数组元素为空:

empty_elems = arrayfun(@(s) isempty(s.x) & isempty(s.y),A.B)

返回:[0 1 0]

要么

empty_elems = arrayfun(@(s) all(structfun(@isempty,s)), A.B);

检查所有字段是否为空(使用any而不是all来检查是否有任何元素为空而不是全部).

A.B(empty_elems) = [];

在评论中完整解决您的问题:

% find array elements that have all fields empty:

empty_elems = arrayfun(@(s) all(structfun(@isempty,s)), A.B);

% copy non-empty elements to a new array `C`:

C = A.B(~empty_elems);

% find elements of C that have y field >3

gt3_elems = arrayfun(@(s) s.y<3,C);

% delete those form C:

C(gt3_elems) = [];

逐步执行此代码并分析中间变量以了解发生了什么.应该相当清楚.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值