【问题标题】:How to double the size of a matrix and propagate its elements in Matlab?如何将矩阵的大小加倍并在 Matlab 中传播其元素?
【发布时间】:2013-01-29 05:06:11
【问题描述】:

假设我有一个这样的矩阵:

a = 
    1    2
    3    4

我想将矩阵的大小加倍并创建如下内容:

aa = 
     1    1    2    2
     1    1    2    2
     3    3    4    4
     3    3    4    4

这样,第一个矩阵中的每个元素都会传播到更大矩阵中的四个元素。

a(i,j) == aa(2*i-1, 2*j-1)
       == aa(2*i  , 2*j-1)
       == aa(2*i-1, 2*j)
       == aa(2*i  , 2*j)

是否有任何预定义的函数可以做到这一点?

当然我可以通过两个循环来做到这一点,但我想要最简单、最干净的方法!

【问题讨论】:

标签: matlab matrix size vectorization


【解决方案1】:

使用kron - Kronecker 张量积:

kron(a,ones(2))


ans =
 1     1     2     2
 1     1     2     2
 3     3     4     4
 3     3     4     4

【讨论】:

  • 谢谢,我还找到了另一种方法。通过使用resizem(a, 2)
  • 酷,不知道这个功能。我看到虽然需要映射工具箱。我打赌kron 更快:)
猜你喜欢
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多