📄 framekernelex1.m
字号:
%
% Example of SVM approximation wavelet frame kernel
% is compared to Gaussian kernel
%
% The conclusion of this test is that
% both kernels seem to give equivalent results.
%
% 10/12/2000 AR -PSI Insa de Rouen
clear all
close all
itermax=1;
erreur=zeros(itermax,3);
for i=1:itermax
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;
x1=x;
x2=x;
%--------------------------SVM Approximation -----------------------
%-------------------------------------------------------------------%
% Frame Kernel %
%-------------------------------------------------------------------%
n=200;
t=linspace(0,10,n)';
uo=1;
a=2^0.25;
bord1=0;
bord2=10;
dilation=[-8 0 5];
framematrix=framewav(t,dilation,uo,a,bord1,bord2);
dual=dualframe(framematrix,t);
C = 10; lambda = 0.000001;
epsilon = .1;
kerneloption = 'numerical';
kernel='frame';
[xsup,ysup,w,w0] = svmreg(x,y,C,epsilon,kernel,kerneloption,lambda,1,[],framematrix,t,dual);
fprintf('Support Vector Processed...');
rx= svmval(xf,xsup,w,w0,kernel,kerneloption,framematrix,t,dual);
%------------------------------------------
% regulation networks
%------------------------------------------
lambda2=15;
x1=x;
x2=x;
kernel='numerical';
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x,'unite');
x1=xf;
[c,d]=regsolve(K,T,y,lambda2);
K=kernelframe(x1,kernel,x2,framematrix,t);
T=phispan(x1,'unite',dilation,uo,a,bord1,bord2);
f1=K*c+T*d;
%-------------------------------------------------------------------%
% SVM gaussian kernel %
%-------------------------------------------------------------------%
C = 10; lambda =1e-7 ;
epsilon = .175;
kerneloption = 0.15;
kernel='gaussian';
[xsup,ysup,w,w0] = svmreg(x,y,C,epsilon,kernel,kerneloption,lambda,0);
rx1= svmval(xf,xsup,w,w0,kernel,kerneloption);
%--------------------Plotting the multiresolution Results-----------------------
% figure
%plot(x,y,'k+',xf,yf,'r',xf,rx,'b',xf,rx1,'g',xf,f1,'m');
%legend('data','Original' ,'Wavelet','Gaussian','Regnet');
errfram=sum( (yf-rx).^2/200);
errgauss=sum((yf-rx1).^2/200);
errreg=sum((yf-f1).^2/200);
erreur(i,:)=[errfram errgauss errreg];
fprintf('i:%d frame: %f gaussian :%f regnet: %f \n',i,errfram,errgauss,errreg);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -