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

📄 mregwav1.m

📁 关于svm的例程
💻 M
字号:
% Example of multiscale approximation using
% Regularization Networks 
% 
% Learning parameters "lambda" have to be tuned
% for instance by means of a cross-validation.
% Wavelet frame are used for approximating a
% Sin + sinc functions.
%
%
% 30/10/2000 AR
%
%
%
%--------------------------------------------------------------------%
%																	%
%								Initialisation   					% 
%																	%
%--------------------------------------------------------------------%


close all
clear all
itermax=1;
errabs=zeros(itermax,3);
errl2=zeros(itermax,3);
lambda=50;  % 
lambda1=15; % 

lambdawav=80;
for i=1:itermax
    
    %--------------------------------------------------------------------%
    %																	%
    %									BUILDING DATA					% 
    %																	%
    %--------------------------------------------------------------------%
    N=100;
    x=sort([0.01; 9.99;10*rand(N-2,1)]);
    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;
    
    %--------------------------------------------------------------------%
    %																	%
    %					Multiscale Wavelet Regularization   			% 
    %																	%
    %--------------------------------------------------------------------%
    
    %-------------------  Step  1  High Level details  -------------------
    n=200;
    t=linspace(0,10,n)';
    uo=1;
    a=2^0.25;
    bord1=0;
    bord2=10;
    dilation=[-8];
    framematrix=framewav(t,dilation,uo,a,bord1,bord2);
    
    x1=x;
    x2=x;
        
    kernel='numerical';
    spanning='wavelet';
    dilation=[0 5];
    K=kernelframe(x1,kernel,x2,framematrix,t);
    K1=K;
    T=phispan(x,spanning,dilation,uo,a,bord1,bord2);
    T1=T;
    [c,d]=regsolve(K,T,y,lambda);
    y1=T*d;
    x1=xf;
    K=kernelframe(x1,kernel,x2,framematrix,t);
    T=phispan(x1,spanning,dilation,uo,a,bord1,bord2);
    
    det1=K*c;
    f1=K*c+T*d;
    fprintf('step 1 done\n');
    
    %-------------------Step 2 Catching Low  resolution -------------------
    n=200;
    t=linspace(0,10,n)';
    
    uo=1;
    a=2^0.25;
    bord1=0;
    bord2=10;
    dilation=[0];
    framematrix=framewav(t,dilation,uo,a,bord1,bord2);
        kernel='numerical';
    spanning='wavelet';
    dilation=[5];
    uo=1;
    x1=x;
    x2=x;
    K=kernelframe(x1,kernel,x2,framematrix,t);
    T=phispan(x,spanning,dilation,uo,a,bord1,bord2);
    [c,d]=regsolve(K,T,y1,lambda1);
    y2=T*d;
    x1=xf;
    K=kernelframe(x1,kernel,x2,framematrix,t);
    T=phispan(x1,spanning,dilation,uo,a,bord1,bord2);
    det2=K*c;
    f2=K*c+T*d;
    fprintf('step 2 done\n');
    approx=T*d;
    yfull=approx+det1+det2;
    
    
    %--------------------------------------------------------------------%
    %																	%
    %									Semiparametric reg				% 
    %																	%
    %--------------------------------------------------------------------%
    x1=x;
    uo=1;
    a=2^0.25;
    bord1=0;
    bord2=10;
    dilation=[-7];
    framematrix=framewav(t,dilation,uo,a,bord1,bord2);
    dual=dualframe(framematrix,t);
    kerneloption=lambdawav;
    kernel='numerical';
    spanning='wavelet';
    dilation=[0 5];
    T=phispan(x,spanning,dilation,uo,a,bord1,bord2);
    K=kernelframe(x,kernel,x2,framematrix,t,dual);
    [c,d]=regsolve(K,T,y,lambdawav);
    T=phispan(xf,spanning,dilation,uo,a,bord1,bord2);
    K=kernelframe(xf,kernel,x2,framematrix,t,dual);
    f1=K*c+T*d;
    
    %--------------------------------------------------------------------%
    %																	%
    %									SVM Approximation				% 
    %																	%
    %--------------------------------------------------------------------%
    %------------------------ Learning Parameters ------------------------    C = 1;  lambda3 = 0.000001; 
    epsilon = .01;    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 Results     								% 
    %																	%
    %--------------------------------------------------------------------%
    
    
    
    
    figure(1)
    h=plot(xf,yf,'k',x,y,'k+',xf,yfull,'b',xf,rx,'r',xf,f1,'g');
    set(h,'LineWidth',2);
    set(gcf,'color','white');
    xlabel('x');
    ylabel('y')
    title('Multiscale Approx on Frame');
    legend('Original','Data','Multi Reg','SVM','Semi Param');
    figure(2)
    h=plot(xf,approx,'r',xf,det2+2,'g',xf,det1+4,'b')
    set(h,'LineWidth',2);
    set(gcf,'color','white');
    xlabel('x');
    ylabel('y')
    
    %--------------------------------------------------------------------%
    %																	%
    %				Error Processing     								% 
    %																	%
    %--------------------------------------------------------------------%
    
    
    
    errfull=sum( (yf-yfull).^2/200);
    errsp=sum( (yf-f1).^2/200);
    errsvm=sum((yf-rx).^2/200);
    absfull=sum(abs(yf-yfull)/200);
    abssp=sum(abs(yf-f1)/200);
    abssvm=sum(abs(yf-rx)/200);
    fprintf('i:%d errreg: %f   errspregnet:%f errsvm :%f\n  ',i,errfull,errsp,errsvm);
    fprintf('i:%d  absreg: %f absspregnet:%f  abssvm :%f\n',i,absfull,abssp,abssvm);
    if errfull>0.1
        fprintf('STOP\n')
        pause
    end;
    errabs(i,:)=[absfull  abssp abssvm];
    
    errl2(i,:)=[errfull errsp errsvm];
    
    %--------------------------------------------------------------------%
    %																	%
    %				Saving Results        								% 
    %																	%
    %--------------------------------------------------------------------%   
    %save compmreg-svm i errabs errl2
end;

⌨️ 快捷键说明

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