📄 mregwav2.m
字号:
% Example of multiscale approximation using
% Regularization Networks
%
% Sin/Sinc frame are used for approximating a
% Sin + sinc functions.
%
%
% 30/10/2000 AR
%
%
close all
clear all
itermax=1;
errabs=zeros(itermax,2);
errl2=zeros(itermax,2);
lambda=40; % 40
lambda1=10; % 10
for i=1:itermax
%--------------------The Data-----------------------------
N=500;
xp=1.5+rand(10,1);
x=sort([0.01; 9.99;10*rand(N-2,1);xp]);
bruit=0.2;
y=sin(x)+sinc(1*(x-5))+sinc(5*(x-2))+bruit*randn(size(x));
xf=linspace(0,10,200)';
yapprox=sin(xf);
ydet3=sinc(1*(xf-5));
ydet2=sinc(5*(xf-2));
yf=yapprox+ydet3+ydet2;
%-------------------Semi Parametrique + Step 1 Catching noise-------------------
n=200;
t=linspace(0,10,n);
fr1=sin(6*pi*(t-1))./(6*pi*(t-1));
fr2=sin(6*pi*(t-2))./(6*pi*(t-2));
fr3=sin(6*pi*(t-3))./(6*pi*(t-3));
fr4=sin(6*pi*(t-4))./(6*pi*(t-4));
fr5=sin(6*pi*(t-5))./(6*pi*(t-5));
fr6=sin(6*pi*(t-6))./(6*pi*(t-6));
fr7=sin(6*pi*(t-7))./(6*pi*(t-7));
fr8=sin(6*pi*(t-8))./(6*pi*(t-8));
fr9=sin(6*pi*(t-9))./(6*pi*(t-9));
framematrix=[fr1;fr2;fr3;fr4;fr5;fr6;fr7;fr8;fr9];
x1=x;
x2=x;
kernel='numerical';
spanning='sinc13_sin';
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x,spanning);
[c,d]=regsolve(K,T,y,lambda);
y1=T*d;
x1=xf;
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x1,spanning);
det1=K*c;
f1=K*c+T*d;
fprintf('step 1 done\n');
%-------------------Step 2 Catching Next resolution sinc(3x)--------------------
n=200;
t=linspace(0,10,n);
fr1=sin(1*pi*(t-1))./(1*pi*(t-1));
fr2=sin(1*pi*(t-2))./(1*pi*(t-2));
fr3=sin(1*pi*(t-3))./(1*pi*(t-3));
fr4=sin(1*pi*(t-4))./(1*pi*(t-4));
fr5=sin(1*pi*(t-5))./(1*pi*(t-5));
fr6=sin(1*pi*(t-6))./(1*pi*(t-6));
fr7=sin(1*pi*(t-7))./(1*pi*(t-7));
fr8=sin(1*pi*(t-8))./(1*pi*(t-8));
fr9=sin(1*pi*(t-9))./(1*pi*(t-9));
fr10=sin(3*pi*(t-1))./(3*pi*(t-1));
fr11=sin(3*pi*(t-2))./(3*pi*(t-2));
fr12=sin(3*pi*(t-3))./(3*pi*(t-3));
fr13=sin(3*pi*(t-4))./(3*pi*(t-4));
fr14=sin(3*pi*(t-5))./(3*pi*(t-5));
fr15=sin(3*pi*(t-6))./(3*pi*(t-6));
fr16=sin(3*pi*(t-7))./(3*pi*(t-7));
fr17=sin(3*pi*(t-8))./(3*pi*(t-8));
fr18=sin(3*pi*(t-9))./(3*pi*(t-9));
framematrix=[fr1;fr2;fr3;fr4;fr5;fr6;fr7;fr8;fr9;fr10;fr11;fr12;fr13;fr14;fr15;fr16;fr17;fr18];
kernel='numerical';
spanning='sin';
x1=x;
x2=x;
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x,spanning);
[c,d]=regsolve(K,T,y1,lambda1);
y2=T*d;
x1=xf;
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x1,spanning);
det2=K*c;
f2=K*c+T*d;
fprintf('step 2 done\n');
approx=T*d;
yfull=approx+det1+det2;
%--------------------------SVM Approximation -----------------------
%----------------------Learning Parameters ------------------- C = 1; lambda3 = 0.000001;
epsilon = .1; kerneloption = 0.25; kernel='gaussian';
[xsup,ysup,w,w0] = svmreg(x,y,C,epsilon,kernel,kerneloption,lambda3,0); rx = svmval(xf,xsup,w,w0,kernel,kerneloption);
%-------------------Plotting the results--------------------
figure
plot(xf,yf,'k',x,y,'k+',xf,yfull,'b',xf,rx,'r');
set(gcf,'color','white');
xlabel('x');
ylabel('y')
title('Multiscale Approx on Frame');
legend('Original','Data','Approximation','SVM approximation');
axis([0 10 -1 2.5]);
errfull=sum( (yf-yfull).^2/200);
if errfull>0.1
fprintf('Tope\n');
pause
end;
errsvm=sum((yf-rx).^2/200);
absfull=sum(abs(yf-yfull)/200);
abssvm=sum(abs(yf-rx)/200);
fprintf('i:%d errfull: %f errsvm :%f\n',i,errfull,errsvm);
fprintf('i:%d absfull: %f abssvm :%f\n',i,absfull,abssvm);
errabs(i,:)=[absfull abssvm];
errl2(i,:)=[errfull errsvm];
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -