2017-05-03 65 views
0

我有一個3×4×5的矩陣,我想給名稱的第三維['a','b','c','d','e']。我該怎麼做呢? dataset命令似乎只適用於矩陣?matlab:多維陣列名稱

+1

只需要在你的「字符串數組」中註釋'''''','b','c','d','e']'和'abcde'完全一樣。您需要使用單元格數組來生成一個字符串數組:'{'a','b','c','d','e'}' – Anthony

回答

0

您可以將三維數組轉換成矩陣的單元陣列,然後這個單元陣列轉換成一個結構與所需的字段名稱:

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等等:

>> isequal(y.b, x(:,:,2)) % check 
ans = 
    logical 
    1 

但是,請注意,保持數據爲3D陣列通常更快,更高效。因此,另一種方法是通過常量A = 1,B = 2等來定義所需的「名稱」,並將原始3D陣列索引爲x(:,:,A),x(:,:,B)