Python 和matlab 关于DMD(动态模态分解)的实现和对比 21/06/08

参考资料:寇家庆,张伟伟. 动力学模态分解及其在流体动力学中的应用. 空气动力学报. 2018

 

通过numpy和matlab对于该论文中的典型算例1进行复现,并基于实数算例进行对比分析.

1 典型算例DMD方法代码和对比:

matlab:

X = [0.5,0.55-0.25i,0.48-0.55i,0.253-0.845i;1,1+0.1i,0.99+0.2i,0.97+0.299i;0.8,0.16-0.008i,0.0319-0.0032i,0.0064-0.001i];
Y = [0.55-0.25i,0.48-0.55i,0.253-0.845i,-0.1442-1.056i;1+0.1i,0.99+0.2i,0.97+0.299i,0.9401+0.396i;0.16-0.008i,0.0319-0.0032i,0.0064-0.001i,0.0013-0.0003i];
%X = [4,4,4,4; 3,9,27,81; 1,6,36,216];
%Y = [4,4,4,4; 9,27,81,243; 6,36,216,1476];

[u,s,v] = svd(X,'econ');
a1 = u' * Y *v * s^-1;
[V,D]= eig(a1);

其中,econ项将分解后的vt去除一列,从4*4矩阵变为4*3矩阵

python:

# python中特征值sigma是以列表形式出现,因此需要将其转化为对角阵

#numpy中linalg的SVD项目前似乎尚不支持econ项,因此需要手动进行去值。

两种工具进行SVD分解后的Vt项并不是互为转置,而是互为共轭转置。 因此,在某些情况下,U项

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值