3

我需要一些帮助来在 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]

我不知道如何创建这样的数据结构。如果它现在是错误的数据结构,那么摆脱一个结构对我来说可能根本不是问题。不过,我需要帮助来创建新的数据结构。谢谢你的帮助 :-)

4

1 回答 1

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};
    

这个问题通常没有正确的答案。对于小程序,这并不重要,你应该选择对你来说最自然的东西。对于性能受限的应用程序,您需要考虑有效的内存分配,以及以您通常需要访问数据的方式快速访问数据。

于 2012-06-27T05:20:44.260 回答