无法将值存储到数组MATLAB中

时间:2012-08-30 13:48:00

标签: arrays matlab

我在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值在他们中。知道怎么做吗?

非常感谢你。

1 个答案:

答案 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是什么?它甚至有名字吗?涉及这种技术的问题经常弹出,如果我知道它的名称会有所帮助,所以我可以在答案中发布指向手册页的链接......