matlab - 从移位向量制作矩阵 matlab 向量化

标签 matlab vector matrix vectorization

您好,这是一个小问题。

我有一个向量 v (size(v) = T),一个正数 P,P < T 和正数 N,N < T。并且想要制作大小为 PxN 的矩阵 M,因此:

M = [v(T),     v(T-1), ....., v(T-N+2),   v(T-N+1);
     v(T-1),   v(T-2), ....., v(T-N+1),   v(T-N)  ;
     v(T-2),   v(T-3), ....., v(T-N),     v(T-N-1);
        .        .       .       .           .    ;
        .        .       .       .           .    ;
     v(T-P+1), v(T-P), ....., v(T-P-N+3), v(T-P-N+2)]

认为 T > P + N。

举个例子。

v = [1, 2, 3, 4, 5]';
P = 3;
N = 3;
M = [5, 4, 3;
     4, 3, 2;
     3, 2, 1]

我知道如何使用 for 循环来做到这一点,但我也认为可以通过矢量化来做到这一点 - 这里的问题是 - 我在矢量化方面不太熟练。

感谢提示等:))

最佳答案

使用Hankel矩阵:

v = [1 2 3 4 5];
T = length(v);
P = 3;
N = 3;
out = hankel(v(T:-1:T-P+1),v(T-P+1:-1:T-P-N+2));

关于matlab - 从移位向量制作矩阵 matlab 向量化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19560573/

相关文章:

matlab - 使用线性分类器最小化训练误差

c++ - 使用单独编译时返回 typedef 类型

Perl foreach 循环遍历一个矩阵行

python - 有没有办法在 NumPy 中使数组条目成为复杂变量?

c++ - 如何使用指针到指针来传递矩阵?

matlab - 使用 ezplot 在 MATLAB 中的同一张图上绘制两个函数

linux - 无法读取文件 Matlab Linux Ubuntu

matlab - 如何裁剪图像中的多个对象 [MATLAB]

C++ 对 vector 字符串进行排序不起作用

c++ - 对 3D vector 对进行排序