Arrays 删除特定索引处结构的所有字段
如果我有一个结构,例如:Arrays 删除特定索引处结构的所有字段,arrays,matlab,struct,Arrays,Matlab,Struct,如果我有一个结构,例如: myStruct = struct('a',[1,2,3],'b',[1,2,3],'c',[1,2,3]) …我想删除每个字段的第二个元素,我将执行以下操作: myStruct.a(2) = []; myStruct.b(2) = []; myStruct.c(2) = []; 是否有一种更简单的方法来执行此操作,即不需要手动写出每个字段名?我有可能在不同情况下继承几个不同字段的结构,所以我永远无法明确知道哪些字段将出现,以便对其进行硬编码。即使我知道,它也会占用
myStruct = struct('a',[1,2,3],'b',[1,2,3],'c',[1,2,3])
…我想删除每个字段的第二个元素,我将执行以下操作:
myStruct.a(2) = [];
myStruct.b(2) = [];
myStruct.c(2) = [];
是否有一种更简单的方法来执行此操作,即不需要手动写出每个字段名?我有可能在不同情况下继承几个不同字段的结构,所以我永远无法明确知道哪些字段将出现,以便对其进行硬编码。即使我知道,它也会占用好几行
注意:我知道可以按照
myStruct.a
的格式排列结构,但我更喜欢myStruct.a(2)
的格式,因为它允许我根据我正在运行的特定程序的需要,一次向结构添加字段。你知道字段名和动态字段名吗
fnames = fieldnames ( myStruct )
for ii=1:length(fnames)
myStruct.(fnames{ii})(2) = [];
end
您是否知道字段名
和动态字段名
fnames = fieldnames ( myStruct )
for ii=1:length(fnames)
myStruct.(fnames{ii})(2) = [];
end
您可以使用将匿名函数应用于每个字段:
myStruct = structfun(@(x) x([1 3:end]), myStruct, 'UniformOutput', false);
您可以使用将匿名函数应用于每个字段:
myStruct = structfun(@(x) x([1 3:end]), myStruct, 'UniformOutput', false);