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. 構造体の各フィールドに cell 配列を割り当てることができます。
    このような構造に次のように記述します。

    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. 私がよく使用するもう 1 つの構成要素は、構造体の配列です。
    これをセル値フィールドと組み合わせると、書き込みは次のようになります。

    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 に答える