技术文章: 矩阵的SVT分解 1

2017-03-24  by:CAE仿真在线  来源:互联网

SVD是Singular Value Decomposition的英文缩写,即奇异值分解,听起来很高深,实际上就是一种将矩阵分解为几个矩阵乘积的一种技术,换句话说,就是用几个矩阵的乘积来拟合已知矩阵。

>> A=[4 4 5;4 5 5;3 3 2;4 5 4;4 4 4;3 5 4;4 4 3;2 4 4;5 5 5]

A =

4 4 5

4 5 5

3 3 2

4 5 4

4 4 4

3 5 4

4 4 3

2 4 4

5 5 5

>> [U,S,V]=svd(A)

U =

-0.3549 0.0891 0.6351 0.0242 -0.3937 0.2366 -0.0899 0.0312 -0.4921

-0.3842 0.1889 0.1027 -0.2271 0.0478 -0.5715 0.1054 -0.6410 0.0598

-0.2181 -0.3960 -0.2809 -0.4417 -0.1458 -0.2550 -0.5919 0.2276 -0.1822

-0.3568 -0.0756 -0.3300 0.8236 -0.0930 -0.1587 -0.1709 -0.0575 -0.1162

-0.3274 -0.1754 0.2024 0.0195 0.8759 0.1294 -0.0595 0.0958 -0.1551

-0.3318 0.3326 -0.4802 -0.2235 -0.0131 0.6394 -0.0832 -0.2872 -0.0164

-0.2999 -0.4399 -0.2304 -0.1342 -0.1418 0.0108 0.7562 0.1483 -0.1773

-0.2774 0.6410 -0.0981 -0.0747 0.0357 -0.2743 0.1160 0.6364 0.0446

-0.4092 -0.2192 0.2530 0.0243 -0.1551 0.1618 -0.0743 0.1198 0.8061


S =

21.1167 0 0

0 2.0140 0

0 0 1.4239

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

V =

-0.5277 -0.8221 0.2139

-0.6205 0.2010 -0.7580

-0.5801 0.5327 0.6161


我们来验证一下,看看U、S、V三个矩阵相乘是否等于A。

>> U*S*V

ans =

3.3181 6.6778 -1.1818

3.9606 6.8245 -1.9340

3.1568 3.4119 -0.6269

4.3424 5.9122 -1.7857

3.7000 5.7656 -1.0335

3.6780 5.5298 -2.4278

4.0818 4.8533 -0.8852

2.3711 5.0006 -2.3177

4.6250 7.2070 -1.2919

这是怎么回事呢?

答案是:要对V进行一下转置才行。

>> V'

ans =

-0.5277 -0.6205 -0.5801

-0.8221 0.2010 0.5327

0.2139 -0.7580 0.6161

>> U*S*V'

ans =


4.0000 4.0000 5.0000

4.0000 5.0000 5.0000

3.0000 3.0000 2.0000

4.0000 5.0000 4.0000

4.0000 4.0000 4.0000

3.0000 5.0000 4.0000

4.0000 4.0000 3.0000

2.0000 4.0000 4.0000

5.0000 5.0000 5.0000


这回就对了:A=U*S*V’。


技术文章: 矩阵的SVT分解 1HFSS仿真分析图片1

S =



21.1167 0 0

0 2.0140 0

0 0 1.4239

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

3、U和V与自己的转置矩阵相乘等于单位矩阵,即对角线上的元素全为1的对角阵。

>> U*U'

ans =

1.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000

-0.0000 1.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000

0.0000 -0.0000 1.0000 0 0.0000 -0.0000 0.0000 -0.0000 0.0000

-0.0000 -0.0000 0 1.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000

-0.0000 -0.0000 0.0000 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 -0.0000

-0.0000 0.0000 -0.0000 0.0000 -0.0000 1.0000 -0.0000 0.0000 -0.0000

-0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 0.0000

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 1.0000 -0.0000

0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 1.0000

>> V*V'

ans =

1.0000 -0.0000 -0.0000

-0.0000 1.0000 -0.0000

-0.0000 -0.0000 1.0000



技术文章: 矩阵的SVT分解 1HFSS仿真分析图片2

技术文章: 矩阵的SVT分解 1HFSS分析图片3

用前面的例子验证一下。

其中:

u=U(:,1:3)表示截取矩阵U的前三列;

s=S(1:3,:)表示截取矩阵S的前三行。

>> A=[4 4 5;4 5 5;3 3 2;4 5 4;4 4 4;3 5 4;4 4 3;2 4 4;5 5 5];

A =

4 4 5

4 5 5

3 3 2

4 5 4

4 4 4

3 5 4

4 4 3

2 4 4

5 5 5

>> [U,S,V]=svd(A)

U =

-0.3549 0.0891 0.6351 0.0242 -0.3937 0.2366 -0.0899 0.0312 -0.4921

-0.3842 0.1889 0.1027 -0.2271 0.0478 -0.5715 0.1054 -0.6410 0.0598

-0.2181 -0.3960 -0.2809 -0.4417 -0.1458 -0.2550 -0.5919 0.2276 -0.1822

-0.3568 -0.0756 -0.3300 0.8236 -0.0930 -0.1587 -0.1709 -0.0575 -0.1162

-0.3274 -0.1754 0.2024 0.0195 0.8759 0.1294 -0.0595 0.0958 -0.1551

-0.3318 0.3326 -0.4802 -0.2235 -0.0131 0.6394 -0.0832 -0.2872 -0.0164

-0.2999 -0.4399 -0.2304 -0.1342 -0.1418 0.0108 0.7562 0.1483 -0.1773

-0.2774 0.6410 -0.0981 -0.0747 0.0357 -0.2743 0.1160 0.6364 0.0446

-0.4092 -0.2192 0.2530 0.0243 -0.1551 0.1618 -0.0743 0.1198 0.8061

S =

21.1167 0 0

0 2.0140 0

0 0 1.4239

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

V =

-0.5277 -0.8221 0.2139

-0.6205 0.2010 -0.7580

-0.5801 0.5327 0.6161

>> U*S*V'

ans =

4.0000 4.0000 5.0000

4.0000 5.0000 5.0000

3.0000 3.0000 2.0000

4.0000 5.0000 4.0000

4.0000 4.0000 4.0000

3.0000 5.0000 4.0000

4.0000 4.0000 3.0000

2.0000 4.0000 4.0000

5.0000 5.0000 5.0000

>> u=U(:,1:3)

u =

-0.3549 0.0891 0.6351

-0.3842 0.1889 0.1027

-0.2181 -0.3960 -0.2809

-0.3568 -0.0756 -0.3300

-0.3274 -0.1754 0.2024

-0.3318 0.3326 -0.4802

-0.2999 -0.4399 -0.2304

-0.2774 0.6410 -0.0981

-0.4092 -0.2192 0.2530

>> s=S(1:3,:)

s =

21.1167 0 0

0 2.0140 0

0 0 1.4239

>> u*s*V'

ans =

4.0000 4.0000 5.0000

4.0000 5.0000 5.0000

3.0000 3.0000 2.0000

4.0000 5.0000 4.0000

4.0000 4.0000 4.0000

3.0000 5.0000 4.0000

4.0000 4.0000 3.0000

2.0000 4.0000 4.0000

5.0000 5.0000 5.0000

很明显,截取U的前3列和S的前3行后,U、S、V’相乘仍然可以得到矩阵A。

技术文章: 矩阵的SVT分解 1HFSS分析图片4

>> A=[0.6 0.7 0.8 0.2;0.3 0.5 0.1 0.9;0.0 0.15 -0.3 0.8;0.48 0.5 0.76 -0.16]

A =

0.6000 0.7000 0.8000 0.2000

0.3000 0.5000 0.1000 0.9000

0 0.1500 -0.3000 0.8000

0.4800 0.5000 0.7600 -0.1600

>> rank(A)

ans =

2

>> [U S V]=svd(A)

U =

-0.7103 0.1697 -0.0198 -0.6828

-0.4541 -0.5911 0.5911 0.3083

-0.0989 -0.6759 -0.7290 -0.0440

-0.5287 0.4061 -0.3447 0.6609

S =

1.7152 0 0 0

0 1.2586 0 0

0 0 0.0000 0

0 0 0 0.0000

V =

-0.4758 0.0949 0.2159 -0.8473

-0.5850 -0.0597 0.6462 0.4865

-0.5747 0.4672 -0.6373 0.2127

-0.3179 -0.8770 -0.3601 -0.0115

>> u=U(:,1:2)

u =

-0.7103 0.1697

-0.4541 -0.5911

-0.0989 -0.6759

-0.5287 0.4061

>> s=S(1:2,1:2)

s =

1.7152 0

0 1.2586

>> v=V(:,1:2)

v =

-0.4758 0.0949

-0.5850 -0.0597

-0.5747 0.4672

-0.3179 -0.8770

>> v'

ans =

-0.4758 -0.5850 -0.5747 -0.3179

0.0949 -0.0597 0.4672 -0.8770

>> u*s*v'

ans =

0.6000 0.7000 0.8000 0.2000

0.3000 0.5000 0.1000 0.9000

0.0000 0.1500 -0.3000 0.8000

0.4800 0.5000 0.7600 -0.1600



开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:技术文章: 矩阵的SVT分解 1 HFSS电磁分析培训 HFSS培训课程 HFSS技术教程 HFSS无线电仿真 HFSS电磁场仿真 HFSS学习 HFSS视频教程 天线基础知识 HFSS代做 天线代做 Fluent、CFX流体分析 HFSS电磁分析 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com