2012-06-26 47 views
3

我需要一些在Matlab中创建数据结构的帮助。到目前为止,我需要以下内容:在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] 

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

回答

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

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

+1

+1:很好的答案。 –

+1

很好的答案。显然,MATLAB不是为创建富有表现力的数据结构而设计的语言。 –