【问题标题】:Matrix with each element representing a vector每个元素代表一个向量的矩阵
【发布时间】:2012-09-06 21:19:30
【问题描述】:

在 Matlab 中,我想要一个矩阵,其中每个元素都是一个向量,以便我可以识别存储的向量,例如 x(1,2) = vec5x(3,2) = vec1 等。假设:

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

我在考虑“细胞矩阵”甚至 3-d 矩阵的行。没有想法了! :s 非常感谢您的帮助

【问题讨论】:

    标签: matlab vector matrix


    【解决方案1】:

    如果真的每个元素都应该是一个向量,那么单元格是最灵活的解决方案,因为您可以在其中包含不同长度的向量。

    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)等访问向量。未使用的元素包含一个空向量。

    如果所有向量的长度相同,则将它们存储在矩阵或 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));

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多