记录一个有关MATLAB的cell,困惑我很久的问题,假设有一个n*1的cell,里面放着一些结构体,如果使用花括号切片访问cell块会报错“需要花括号或点索引表达式中的一个输出,但结果有x个”。
下面给出一个使用cellfun的解决方案,详细看测试代码,
clc
clear
my_cell = cell(1, 10);
for i = 1 : 10
s = struct;
s.id = i;
my_cell{i} = s;
end
% 可正常访问
disp(my_cell{1}.id);
% 报错:需要花括号或点索引表达式中的一个输出,但结果有 10 个。
% disp(sum(my_cell{:}.id));
% 解决方案
disp(sum(cellfun(@(x) x.id, my_cell(:))))
使用cellfun把.id操作运用到my_cell中的每个struct中,得到一个列向量,就可以对列向量进行操作了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删