我在Matlab中有一个1x280结构。为了让我使用这些值,我将其更改为struct2cell
数组。
以下是280中的一个结构的示例:
Field Value Min Max
point1 [29,469] 29 469
point2 [42,469] 42 469
-------------------------------------------
使用以下代码更改为单元格数组后:
showlines = struct(lines);
cellData = struct2cell(showlines);
cellData{1,1}(1)
= 29
但是,如果我使用它:
cellData{1,1:280}(1);
有错误
Error:: bad cell reference operation
我需要将280个结构中每个结构中x
的所有point1
值保留为数组,以便找出X
的最大point1
值在他们中。知道怎么做吗?
非常感谢你。
答案 0 :(得分:1)
虽然不是您问题的直接答案,但您可能有兴趣知道
%# some example data
S(1).point1 = [29 469];
S(1).point2 = [42 469];
S(2).point1 = [30 470];
S(2).point2 = [43 470];
...
S(280).point1 = [130 870];
S(280).point2 = [243 970];
%# transform to regular array
pt1 = reshape([S.point1],[],2).';
pt2 = reshape([S.point2],[],2).';
将导致
pt1 = [29 469 pt2 = [42 469
30 470 43 470
... ...
130 870]; 243 970];
使您可以执行
之类的操作>> pt1(:, 2)
ans =
469
470
..
870
>> min(pt1(:,1))
ans =
29
这可以解决您的问题吗?
对于任何路人:非标量[S.field]
的符号structs
是什么?它甚至有名字吗?涉及这种技术的问题经常弹出,如果我知道它的名称会有所帮助,所以我可以在答案中发布指向手册页的链接......