MATLAB:结构字段的长度,它是结构列表

时间:2011-10-26 19:22:34

标签: arrays matlab field structure

我发现这个网站对我遇到的很多问题非常有用,这是我在这里发布的第一个问题。我没有通过搜索找到答案所以我道歉,如果它存在于其他地方。

我所拥有的是一个结构数组(MxN),创建为

first = struct('field1',0);
array = repmat(first,[MxN]); %now we have an array of structures

'field1'我初始化为0,因为array(i,j)中每个结构的此字段长度可变。这意味着我事先并不知道它的长度。我的程序完成后,array(1,1).field1是一个结构字段,与array(1,2)相同,但列表的长度可能相同,也可能不同。

有没有办法可以在'field1'中返回结构列表的长度?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,对于数组的每个结构,field1将包含一个向量,并且您希望获得每个向量的长度。例如

array = repmat(struct('field1',0), [2 3]);
for i=1:size(array,1)
    for j=1:size(array,2)
        array(i,j).field1 = rand(randi([1 10]),1);
    end
end

如果是这种情况,可以通过以下两种方式获得长度:

>> len = cellfun(@length, {array.field1})
len =
     3     8     9     4     1     7

>> len = arrayfun(@(s) length(s.field1), array)
len =
     3     9     1
     8     4     7

编辑:

事实证明,field1包含另一个嵌套结构,并且您希望获得此嵌套结构中数据的每个元素的字段数。实施例

array = repmat(struct('field1',0),[1 2]);

array(1,1).field1.a = 1;
array(1,1).field1.b = 1;

array(1,2).field1.c = 2;

len = arrayfun(@(s) length(fieldnames(s.field1)), array)