在Matlab中创建更复杂的数据结构?
我需要一些在Matlab中创建数据结构的帮助。到目前为止,我需要以下几点:在Matlab中创建更复杂的数据结构?,matlab,data-structures,structure,Matlab,Data Structures,Structure,我需要一些在Matlab中创建数据结构的帮助。到目前为止,我需要以下几点: string1 value1 string2 value2 string3 value3 等等。我为此使用了一个结构: mystruct = struct('mystrings', {}, 'myvalues', {}); 现在除了字符串和值之外,我还需要为字符串-值对分配几个数组(列向量,仅包含数字)。它可以是不同的,有多少数组被分配给一个字符串-值对,例如 string1 value1 [1;2] [1;3] s
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]
我不知道如何创建这样的数据结构。如果一个结构现在是错误的数据结构,那么对我来说,去掉它可能根本不是问题。不过,我需要关于创建新数据结构的帮助。感谢您的帮助:-)在考虑“正确”的数据结构时,总是有很多选择。一些选择:
你可以这样写:
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};
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;
你会这样读:
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};
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;
然后一个字看起来像这样:
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};
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;
读起来像这样:
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};
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;
将其与单元格值字段相结合,写操作如下所示:
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};
对此通常没有正确的答案。对于小程序来说,这并不重要,你应该选择你觉得最自然的。对于性能有限的应用程序,您需要考虑诸如高效内存分配之类的事情,以及以通常需要访问的方式快速访问数据。显然,MATLAB不是一种设计用于创建表达性数据结构的语言。