2012-09-06 151 views
0

在Matlab中,我希望有一個矩陣,其中每個元素是一個向量,這樣我就可以識別存儲載體如x(1,2) = vec5x(3,2) = vec1等假設:矩陣每個元素表示矢量

x=[ vec1 vec2 vec3; vec4 vec5 vec6; vec2 vec1 vec9]; 

我正在思考「細胞矩陣」甚至是三維矩陣。用盡想法! :s我會感謝您的幫助

回答

3

如果真的每個元素都應該是一個向量,那麼一個單元格是最靈活的解決方案,因爲您可以使用不同長度的向量。

vec1 = 1:2; 
vec2 = 1:3; 
vec3 = 1:4; 
x{1,1} = vec1; 
x{2,1} = vec2; 
x{2,2} = vec3; 
x 
x = 
    [1x2 double]    [] 
    [1x3 double] [1x4 double] 

並訪問使用x(1,1)x(2,1)等未使用的元素包含一個emtpy矢量的矢量。

如果所有矢量具有相同的長度,則將它們存儲在矩陣或3D數組中,例如,

vec1 = rand(1, 3); 
vec2 = rand(1, 3); 
vec3 = rand(1, 3); 
%# Matrix with one vector per column. 
x = [vec1.', vec2.', vec3.']; 
x = 
    0.9649 0.9572 0.1419 
    0.1576 0.4854 0.4218 
    0.9706 0.8003 0.9157 

%# 3D array 
y = nan(2, 2, length(vec1)); 
y(1,1,:) = vec1; 
y(1,2,:) = vec2; 
y(2,2,:) = vec3; 
y 
y(:,:,1) = 
    0.9649 0.9572 
     NaN 0.1419 

y(:,:,2) = 
    0.1576 0.4854 
     NaN 0.4218 

y(:,:,3) = 
    0.9706 0.8003 
     NaN 0.9157 

在3D情況下,未使用的元素被初始化爲NaN。如果您希望它們爲零,請改爲使用y = zeros(2, 2, length(vec1));