向量应该看起来像
[1 2 3 0 0 0
0 1 2 3 0 0
0 0 1 2 3 0
0 0 0 1 2 3];
我知道我希望沿对角线“粘贴”的向量([1 2 3]),但是我不知道数组的大小,因此行数需要由变量N确定。 / p>
答案 0 :(得分:4)
您可以使用spdiags
来设置对角线并具有所需的形状:
n = 4;
A = full(spdiags(ones(n,1)*[1,2,3],[0,1,2],n,n+2));
这将返回:
A =
1 2 3 0 0 0
0 1 2 3 0 0
0 0 1 2 3 0
0 0 0 1 2 3
答案 1 :(得分:4)
有点粗糙,但可以将所需的矩阵构造为toeplitz:
a = [1 2 3];
toeplitz([a(1); zeros(length(a),1)],[a(:); zeros(length(a),1)])
有答案:
ans =
1 2 3 0 0 0
0 1 2 3 0 0
0 0 1 2 3 0
0 0 0 1 2 3
答案 2 :(得分:2)
您还可以使用2D卷积:
v = [1 2 3];
N = 4;
result = conv2(v, eye(N))