Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 我需要创建一个对角矩阵,其中对角元素是向量_Matlab - Fatal编程技术网

Matlab 我需要创建一个对角矩阵,其中对角元素是向量

Matlab 我需要创建一个对角矩阵,其中对角元素是向量,matlab,Matlab,向量应该看起来像 [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确定行数。您可以使用设置对角线并具有所需的形状: 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

向量应该看起来像

[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确定行数。

您可以使用设置对角线并具有所需的形状:

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

这有点粗糙,但可以将所需矩阵构造为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

也可以使用二维卷积:

v = [1 2 3];
N = 4;
result = conv2(v, eye(N))