c 矩阵变matlab矩阵,【原创】矩阵Given变换Matlab代码

function [R,y]=givens(x,i,j)

% 求解标准正交的Given变换矩阵R,使用Rx=y,其中y(j)=0,y(i)=sqrt(x(i)^2+x(j)^2)

%

% 参数说明

% x:需要进行Givens变换的列向量

% i:变为sqrt(x(i)^2+x(j)^2)的元素下标

% j:变为0的元素的下标

% R:Givens变换矩阵

% y:Givens变换结果

%

% 实例说明

% x=[1 3 5 9 6]'; % 将3等效到9上

% [R,y]=givens(x,4,2) % 注意3的下标为2,9的下标为4

% R*x-y % 验证Rx=y

%

% 关于Givens变换说明

% 1.Givens矩阵是标准正交矩阵,也叫平面旋转矩阵,它是通过坐标旋转的原理将元素j的数值等效到元素i上

% 2.Givens变换每次只能将一个元素变为0,而Householder变换则一次可以将任意个元素变为0

% 3.Givens变换常用于将矩阵A变为对角阵

%

% by dynamic of Matlab技术论坛

% see also http://www.matlabsky.com

% contact me matlabsky@gmail.com

% 2010-01-16 23:31:05

%

xi=x(i);

xj=x(j);

r=sqrt(xi^2+xj^2);

cost=xi/r;

sint=xj/r;

R=eye(length(x));

R(i,i)=cost;

R(i,j)=sint;

R(j,i)=-sint;

R(j,j)=cost;

y=x(:);

y([i,j])=[r,0];

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值