【自定义Matlab函数】利用Kronecker积求解矩阵方程AXB=D | 您所在的位置:网站首页 › axb怎么算 › 【自定义Matlab函数】利用Kronecker积求解矩阵方程AXB=D |
基本知识
Kronecker积定义
如果A是一个m×n的矩阵,B是一个p×q的矩阵,A与B的Kronecker积为一个mp×nq的分块矩阵: 首先需要知道矩阵拉直运算/矩阵向量化处理概念:矩阵按行或列的顺序组成一个长向量(即下文中vec()). 基于Kronecker积的定义,我们可以得出如下性质: Matlab自带kron()函数来计算Kronecker积 格式:C = kron(A,B) 自定义函数函数定义: function X = SloveEquationKron(A,B,D) [m,p]=size(A); [q,n]=size(B); [m,n]=size(D); B=B'; C=[]; % 创建空矩阵C for row=1:n M=[]; % 辅助矩阵M for col=1:q M=[M,B(row,col)*A]; end C=[C;M]; % 矩阵拼接实现Kronecker积 end XX=C\D(:); % inv(C)*vec(D) C=B'与A的kron积 X=reshape(XX,[p,q]); end测试程序: m=10; p=5; q=6; n=8; A = rand(m,p); X = zeros(p,q); B = rand(q,n); D = rand(m,n); X = SloveEquationKron(A,B,D); norm(kron(B',A)\D(:)-X(:),'fro') %正确输出0参考资料: 百度百科——克罗内克积 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |