在Matlab中创建更复杂的数据结构?

时间:2012-06-26 22:51:12

标签: matlab data-structures structure

我需要一些帮助来在Matlab中创建数据结构。到现在为止我需要以下内容:

string1 value1
string2 value2
string3 value3

等等。我使用了一个结构:

mystruct = struct('mystrings', {}, 'myvalues', {});

现在除了字符串和值之外,我现在需要将几个数组(列向量,只包含数字)分配给我的字符串 - 值对。它可以是不同的,为字符串值对分配了多少个数组,例如

string1 value1 [1;2] [1;3]
string2 value2 [9;10]
string3 value3 [3;4] [2;9] [0;3]

我不知道如何创建这样的数据结构。如果它现在是错误的数据结构,那么根本不需要摆脱一个结构。不过,我需要有关创建新数据结构的帮助。感谢您的帮助: - )

1 个答案:

答案 0 :(得分:6)

在考虑“正确”的数据结构时,总会有很多选择。一些选择:

  1. 您可以为结构的每个字段指定一个单元格数组 你会写这样的结构:

    data.field1{1} = 'a string';
    data.field1{2} = [1 2 3 4];
    data.field1{3} = [5:2:10];
    data.field2{1} = 'another string'
    

    你会这样读:

    allValueInACellArray = data.field1;
    onlyTheThirdValue = data.field1{3};
    
  2. 您可以使用嵌套结构 然后写一个如下:

    data.field1.name = 'some name';
    data.field1.firstarray = [1 2 3 4];
    data.field1.secondarray = [5:2:10];
    data.field2.name = 'another name';
    

    并且读取如下所示:

    justTheFirstName = data.field1.name;
    onlyTheSecondArray = data.field1.firstArray;
    
  3. 我经常使用的另一个构造是一系列结构 将此与单元格值字段相结合,写入如下所示:

    data(1).name = 'some name';
    data(1).arrays = {[1 2 3 4]  5:2:10};
    data(2).name = 'another name';
    data(2).arrays = {[5 6 7 8]  6:3:12};
    
  4. 通常没有正确的答案。对于小程序来说,这并不重要,你应该选择对你来说最自然的东西。对于性能受限的应用程序,您需要考虑诸如高效的内存分配和以通常需要访问它的方式快速访问数据之类的事情。