从结构的多个字段中提取行

时间:2018-07-25 10:50:21

标签: matlab indexing struct reference cell-array

创建列向量(100行)的结构(25个字段)。如何提取其特定的行。例如,

s.a=[1 2 3 4 5 6]'
s.b=[5 2 8 1 0 4]'
s.c=[9 7 0 1 3 5]'
% 2 to 4 rows to be extracted
% expected output
t.a=[2 3 4]'
t.b=[2 8 1]'
t.c=[7 0 1]'

在结构上建立索引无法正常工作。 可能是通用的方式。

3 个答案:

答案 0 :(得分:7)

您可以简单地使用structfun

t = structfun(@(x)x(2:4),s,'UniformOutput',false)

答案 1 :(得分:1)

使用函数keyword_cap将结构转换为数组,提取行,然后再转换回去。

struct2array

答案 2 :(得分:1)

只需选择结构中的特定行。

% getting the fieldnames of the struct
field = fieldnames(s)

% length of the struct

len = length(field)

startRow = 2;
endRow = 4;

for ii = 1:1:len
   t.(field{ii,1}) = s.(field{ii,1})(startRow:endRow)
end