如何在MATLAB中以高效的方式创建具有多个重复子结构的结构?

时间:2015-06-17 19:44:27

标签: matlab data-structures

我需要在MATLAB中创建一个结构,如下所示:在主结构下有3个子结构:Left,Right,Center。在左和右下有18个子结构(A,B,C,D,E,......),在中心下有5个子结构。 在18和5子结构中的每一个下,我有3个数值向量:x,y,z(表示笛卡尔坐标)。 我的问题是,如何创建这个大型结构而没有一个笨拙而且很长的命令,我应该一遍又一遍地重复相同的字段名称?而不使用循环?是否有任何命令,如" deal"我可以使用以及如何使用?

谢天谢地!

2 个答案:

答案 0 :(得分:0)

使用课程, class通常是一个结构,但可以有方法等。

例如,您可以使用矢量类:

classdef Myvector
    properties
            x;
            y;
            z;
    end
    methods 
            function obj=Myvector(obj,xin,yin,zin)
                  obj.x=xin;
                  obj.y=yin;
                  obj.z=zin;
            end
    end
 end  

所以您可以使用以下内容:

 B=struct('A',Myvector(1,2,3),...

即使您可以定义其他类来抽象代码。

即使你可以使用

 cell2struct

matlab中的函数(关注matlab doc获取更多信息)

答案 1 :(得分:0)

创建Left字段有一个想法。您可以尝试调整它以创建其他字段:

myStruct.Left = cell2struct(repmat({repmat(struct('x', [], 'y', [], 'z', []), 3, 1)}, 18, 1), num2cell('A':'R'), 1);