我想将以下向量A
转换为矩阵B
,最好通过此示例演示:
n = 4;
A = [1 2 3 4 5 6];
B = [ 1 2 3 4;
2 3 4 5;
3 4 5 6; ]
我目前正在使用循环来实现这一目标,并想知道是否可以对其进行矢量化?
谢谢你。
答案 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;