Matlab向量到矩阵转换

时间:2015-10-27 13:59:38

标签: 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; ]

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

谢谢你。

2 个答案:

答案 0 :(得分:7)

您可以使用bsxfun -

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

您还可以使用hankel -

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

示例运行 -

>> 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

答案 1 :(得分:2)

如果您有信号处理工具箱,还可以使用convmtx

// DON'T CHANGE THESE PARAMETERS
//mutation type
#define FLIP 1
#define ADD_CONNECTION 2
#define RM_CONNECTION 3 

// USER DEFINED
static const int TYPE_OF_MUTATION = FLIP;