2017-05-03 9 views
0

私は3行4列5列の行列を持ち、第3次元に名前をつけたいとします['a','b','c','d','e']。これはどうすればいいですか? datasetコマンドは行列に対してのみ機能しますか?matlab:多次元配列の名前

+1

あなたの "文字列配列"、[['a'、 'b'、 'c'、 'd'、 'e'] 'は' 'abcde ''とまったく同じです。 '{'a'、 'b'、 'c'、 'd'、 'e'}'文字列配列を生成するには、セル配列を使用する必要があります。 – Anthony

答えて

0

あなたはあなたの3D配列は、行列のセル配列に変換することができ、その後、このセル配列は、目的のフィールド名を持つ構造体に変換します。

x = rand(3,4,5); % example input 
y = num2cell(x, [1 2]); % to cell of matrices spanning the first and second dims 
y = cell2struct(y, {'a' 'b' 'c' 'd' 'e'}, 3); % to struct with desired field names 

次にあなたがy.ay.bとしての行列を参照することができますしかし、通常、データを3D配列として保持する方が、より高速で効率的であることに注意してください。その代わりに、定数「A = 1」、「B = 2」などを使用して希望の「名前」を定義し、オリジナルの3D配列にインデックスx(:,:,A),x(:,:,B)としてインデックスを付けることもできます。