矩阵,每个元素代表一个向量

时间:2012-09-06 11:46:59

标签: matlab vector matrix

在Matlab中,我希望有一个矩阵,其中每个元素都是一个向量,这样我就可以识别存储的向量,例如x(1,2) = vec5x(3,2) = vec1等。让我们说:

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

我正在思考“细胞矩阵”甚至是三维矩阵。用尽了想法! :谢谢你的帮助

1 个答案:

答案 0 :(得分: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));

相关问题