【发布时间】:2016-08-25 16:31:35
【问题描述】:
我有一个向量,我想让它向前重复 n 次,向后重复 n 次,但是是对角线。
例如,我有向量:
x= [0 0 1 1 0 0],
并且想要一个大小为 6x5 的矩阵,如下所示:
1 0 0 0 0
1 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
0 0 0 0 1
这意味着向量[0 0 1 1 0 0](转置)被放置在中间,我想要一个矩阵,这样当向左移动时,元素会循环移动到顶部,每次移动到左。类似地,向右移动时,每次向右移动,元素都会向下循环移动到底部。因此,第二列将是[0 1 1 0 0 0],其中元素以循环方式向左移动一次,然后第一列将是[1 1 0 0 0 0],我们将所有元素相对于中间向左移动两次,一次使用关于第二列。
同样,第四列将是[0 0 0 1 1 0],这意味着对于中间列,我们将所有元素以循环方式向右移动一次,然后最后一列将是[0 0 0 0 1 1],我们将所有元素移动到右边两次相对于中间,一次相对于第四列。
【问题讨论】:
-
看看
toeplitz。 -
我看到了这里的模式,但是向前和向后重复 n 次是什么意思?
spdiags不工作吗? -
我应该提到,这些矩阵会非常大,大约 75000 x 201。我有一个包含 201 个 0 数据点的向量,其中包含一些 1。我想以对角线模式向后扩展 100 和向前扩展 100 :)
-
向量除了中间是否总是有零?
标签: matlab matrix vector diagonal