matlab - 通过为每一列向下滑动一个给定的向量来创建一个矩阵

标签 matlab matrix vectorization

给定这个向量

a = [1 2 3 4]

我想创建一个这样的矩阵

b = [1 0 0 0;
     2 1 0 0;
     3 2 1 0;
     4 3 2 1;
     0 4 3 2;
     0 0 4 3;
     0 0 0 4]

以不使用循环的矢量化方式。

最佳答案

提示:使用conv2 (悬停鼠标查看代码):

a = [1 2 3 4];
b = conv2(a(:), eye(numel(a)));

或者,在类似的情况下,您可以使用 convmtx (来自信号处理工具箱):

a = [1 2 3 4];
b = convmtx(a(:), numel(a));

关于matlab - 通过为每一列向下滑动一个给定的向量来创建一个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28699365/

相关文章:

matlab - 有没有类似 "pre-build"的回调函数?

matlab - 获取矩阵中 n 个最大元素的索引

c# - XNA - 矩阵等效于 SpriteBatch.Draw 转换?

python - 如何在Python中自动公开和修饰方法的函数版本?

matlab - 警告:可能是虚假的解决方案。 [solvelib::checkSolutions]

java - MATLAB JA Builder 在 MCRConfiguration 中抛出 NullPointerException

c - 索引多个数组/矩阵元素类似于 C 中的 matlab "var[1:10]"

python - Tensorflow:矩阵乘法和加法期间的nan

matlab - 有没有办法在矩阵 repmat 数组上执行 mpower?

matlab - 3D 中切片的线性组合