⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example3_13.m

📁 matlab6.5辅助小波分析与应用例程 希望对大家能有所帮助
💻 M
字号:
function [x,act]=rls(A,b,x0,r);
% set defaults
if     nargin<3, fac=1000;x0=zeros(size(A,2),1); 
elseif nargin<3, fac=x0;x0=zeros(size(A,2),1);
else    b=b-A*x0;
end;
x=x0;
aa=diag(A'*A);
% 处理零列
ind=find(aa>0);
n=length(ind);
if n==0, act=1; return; end;
A=A(:,ind);
gamma=b'*b;
if gamma==0, act=1; return; end;
if nargin<3, r=fac*sqrt(gamma./aa(ind));
else   r=r(ind);
end;
% 最小化 ||Az-b||^2  s.t. |z|<=r
prt=0;
[z,fct,ier]=minq(0,-A'*b,A'*A,-r,r,prt);
act=max(abs(z)./r);
x(ind)=x(ind)+z;
%测试程序rlstest.m
n=20;
m=n+5;
sig=1e-7;
A=rand(m,n);
A(:,3)=A(:,n-5)+A(:,n-2)+sig*randn(m,1); 
A(6,:)=A(7,:)+A(5,:)+sig*randn(1,n); 
x0=randn(n,1);
b=A*x0+1e-2*randn(m,1);
% b=randn(m,1);
tic;x=A\b;res1=norm(b-A*x);,tim1=toc
tic;
[xx,act]=rls(A,b);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -