【问题标题】:Generate a 3-d matrix from a vector in Matlab从 Matlab 中的向量生成 3-d 矩阵
【发布时间】:2015-06-25 16:37:07
【问题描述】:

我在 Matlab 中有一个向量 A,维度为 (N-1)x1

A=[0:1:N-2]'

N>=3,例如N=4 A=[0 1 2]

我想构造一个维度为 Mx(N-1)x(N-1) 的 3 维矩阵 B,而不使用循环,例如N=4, M=5

B(:,:,1)=[0 0 0 0;
          0 0 0 0;
          0 0 0 0;
          0 0 0 0;
          0 0 0 0]

B(:,:,2)=[1 1 1 1;
          1 1 1 1;
          1 1 1 1;
          1 1 1 1;
          1 1 1 1]

...

B(:,:,end)=[N-2 N-2 N-2 N-2;
            N-2 N-2 N-2 N-2;
            N-2 N-2 N-2 N-2;
            N-2 N-2 N-2 N-2;
            N-2 N-2 N-2 N-2]

【问题讨论】:

    标签: arrays matlab multidimensional-array


    【解决方案1】:

    这是kronreshape 的一种方法:

    A = 0:N-2;
    B = reshape(kron(A, ones(M, N-1)), M, N-1, []);
    

    我们使用kron 生成M x (N-1) 2D 矩阵,这些矩阵堆叠的元素与A 中的元素一样多,每个矩阵乘以A 中的相应值。下一步是获取每个连接的 2D 矩阵,并将它们作为单独的切片放置在第三维中,由 reshape 完成。

    M = 5, N = 4 示例

    >> B
    
    B(:,:,1) =
    
         0     0     0
         0     0     0
         0     0     0
         0     0     0
         0     0     0
    
    
    B(:,:,2) =
    
         1     1     1
         1     1     1
         1     1     1
         1     1     1
         1     1     1
    
    
    B(:,:,3) =
    
         2     2     2
         2     2     2
         2     2     2
         2     2     2
         2     2     2
    

    【讨论】:

      【解决方案2】:

      这是你想要的吗?

      B = repmat(reshape(A,1,1,[]), M, N-1); %// or change N-1 to N, according to your example
      

      另一种可能性:

      B = bsxfun(@times, reshape(A,1,1,[]), ones(M, N-1)); %// or change N-1 to N
      

      还有一个:

      B = reshape(A(ceil((1:numel(A)*M*(N-1))/M/(N-1))), M, N-1, []); %// or change N-1 to N
      

      【讨论】:

        【解决方案3】:

        我将继续使用permute,直到我掌握了它...

        B = ones(M,N-1,N-1).*permute(A,[3,2,1])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-07
          • 1970-01-01
          • 1970-01-01
          • 2020-11-16
          • 1970-01-01
          • 2016-01-22
          相关资源
          最近更新 更多