记录一个有关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中,得到一个列向量,就可以对列向量进行操作了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...