QR分解——复数域的Givens旋转

QR分解——复数域的Givens旋转

针对复矩阵X的第i行和第j行做Givens旋转。
使得,

  • 第i行变为一个实数:yi=sqrt(|xi|2+|xj|2),

  • 第j行变为0 :yj=0,

  • 其他行不变:yk=xk

理论参考:复矩阵的Givens变换及其QR分解

简单以matlab代码为例子的核心代码如下:(x为矩阵X的某一列向量)

x=[1;2+2i;3-2i;4+2i;5-2i]; % 输入数据 
myGivens(x,2,3);

function [G,y]=myGivens(x,i,j)
    xi=x(i);
    xj=x(j);
    r=sqrt(abs(xi^2)+abs(xj^2));
    cost=xi/r;
    sint=xj/r;
    G=eye(length(x)); % 构建Givens旋转矩阵
    G(i,i)=cost';
    G(i,j)=sint';
    G(j,i)=-sint;
    G(j,j)=cost;
    y=x;
    y([i,j])=[r,0];  % 注:G*x=y
    disp(G*x-y);
end
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值