Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 删除特定索引处结构的所有字段_Arrays_Matlab_Struct - Fatal编程技术网

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);