我正在尝试创建一个矩阵(32 x 32),其主对角线为-1,第一和第二超对角线为1.0到处都是.
A = eye(32)* -1;
Run Code Online (Sandbox Code Playgroud)
这给了我一个主对角线上有-1的矩阵,我该怎么办?
n=32;
toeplitz([-1; zeros(n-1,1)],[-1 1 1 zeros(1,n-3)])
Run Code Online (Sandbox Code Playgroud)
是你需要的.这将创建一个非对称的Toeplitz矩阵(带矩阵),其第一列由[-1; zeros(32-1,1)]
第一行给出[-1 1 1 zeros(1,32-3)]
.n
如有必要,您还可以定义一个大小为输入参数的函数.
您可以使用spdiags
将对角线直接设置为稀疏矩阵,full
如果需要,可以使用-it.
n = 32;
Asparse = spdiags(ones(n,1)*[-1,1,1],[0,1,2],n,n);
Afull = full(Asparse);
Run Code Online (Sandbox Code Playgroud)
小智 5
n = 32
A = -1*eye(n); %Create 32x32 Identity
A(n+1:n+1:n^2) = 1; %Set 1st Superdiagonal to 1
A(2*n+1:n+1:n^2) = 1; %Set 2nd Superdiagonal to 1
Run Code Online (Sandbox Code Playgroud)
请注意,MATLAB使用列主要顺序表示矩阵.对于第一个超对角线,我们从第(n + 1)个元素开始,并在其上选择每个第(n + 1)个元素.除了从(2*n + 1)个元素开始之外,我们对第二个超对角线进行类似的操作.
只是使用diag
和eye
:
n = 32;
z = ones(n-1,1);
A = diag(z,1)+diag(z(1:n-2),2)-eye(n);
Run Code Online (Sandbox Code Playgroud)
还有:
n = 32;
A = gallery('triw',n,1,2)-2*eye(n)
Run Code Online (Sandbox Code Playgroud)