从一些给定的矩阵创建一个矩阵
Create a matrix from some given matrices
我要实施这个矩阵。用户将在其中定义维度值(p 和 N)。
matrix
在 matlab 中执行此操作的最有效方法是什么。
假设您有一个定义 A(p)
、B(p)
和 C(p)
的函数,您可以按如下方式使用 kron
:
F = @(N,p) kron(diag(ones(N,1)),A(p)) + ...
kron(diag(ones(N-1,1),1),B(p)) + ...
kron(diag(ones(N-1,1),-1),C(p))
例如,如果
A = @(p) ones(p);
B = @(p) 2*ones(p);
C = @(p) 3*ones(p);
>> F(4,2)
ans =
1 1 2 2 0 0 0 0
1 1 2 2 0 0 0 0
3 3 1 1 2 2 0 0
3 3 1 1 2 2 0 0
0 0 3 3 1 1 2 2
0 0 3 3 1 1 2 2
0 0 0 0 3 3 1 1
0 0 0 0 3 3 1 1
我要实施这个矩阵。用户将在其中定义维度值(p 和 N)。
matrix
在 matlab 中执行此操作的最有效方法是什么。
假设您有一个定义 A(p)
、B(p)
和 C(p)
的函数,您可以按如下方式使用 kron
:
F = @(N,p) kron(diag(ones(N,1)),A(p)) + ...
kron(diag(ones(N-1,1),1),B(p)) + ...
kron(diag(ones(N-1,1),-1),C(p))
例如,如果
A = @(p) ones(p);
B = @(p) 2*ones(p);
C = @(p) 3*ones(p);
>> F(4,2)
ans =
1 1 2 2 0 0 0 0
1 1 2 2 0 0 0 0
3 3 1 1 2 2 0 0
3 3 1 1 2 2 0 0
0 0 3 3 1 1 2 2
0 0 3 3 1 1 2 2
0 0 0 0 3 3 1 1
0 0 0 0 3 3 1 1