Matlab向量到矩阵的转换

标签 matlab matrix vector vectorization

我想将以下向量 A 转换为矩阵 B,这个例子最好地证明了这一点:

n = 4;

A = [1 2 3 4 5 6];

B = [ 1 2 3 4;
      2 3 4 5;
      3 4 5 6; ]

我目前正在使用循环来实现这一点,想知道是否可以对其进行矢量化?

谢谢 L。

最佳答案

您可以使用 bsxfun -

A(bsxfun(@plus,[0:numel(A)-n]',1:n))

您还可以使用 hankel -

hankel(A(1:n),A(n:end)).'

sample 运行-

>> A = [3,4,6,0,1,2]
A =
     3     4     6     0     1     2
>> n
n =
     4
>> A(bsxfun(@plus,[0:numel(A)-n]',1:n))
ans =
     3     4     6     0
     4     6     0     1
     6     0     1     2
>> hankel(A(1:n),A(n:end)).'
ans =
     3     4     6     0
     4     6     0     1
     6     0     1     2

关于Matlab向量到矩阵的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370029/

相关文章:

c++ - 如何确保特征等距保持等距?

C++ : Reading file and store data in multi-vector

r - 如何使用ggplot绘制向量的直方图/频率计数?

matlab imresize 和 interp2 有什么区别

Java - 如果二维数组包含目标数字,则将其行/列清零

MATLAB block 大小和内存管理

c++ - std::vector new 内存不足

matlab - 在 MATLAB 中按行向量右除

matlab - 矢量化日期数组计算

matlab - 在matlab中查找向量中被删除的元素