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

📄 plotone.m

📁 结合于遗传算法的偏最小二乘 光谱数据与非光谱数据均可使用
💻 M
字号:
% plotone(dataset,b,fin,sel,precision)
function plotone(dataset,b,fin,sel,precision)
if nargin==4
  precision=0;
end
bmf=0;bmp=0;
[r,co]=size(dataset);
v=co-1;
figure(1)
[j,k]=sort(b);
bar(sel(k));
set(gca,'XLim',[0 v])
title(['Smoothed frequency of selections']); 
figure(gcf)
[x,k]=max(fin(2,:));
disp(['Maximum C.V.: ' num2str(x) ' obtained with ' int2str(fin(1,k)) ' variables (' int2str(fin(3,k)) ' comp.):']);
glob=b(1:fin(1,k));
disp(glob)

nonsignincr=fin(4,k)*(sqrt(finv(.9,r-1,r-1))-1) %nonsignincr is the increase in RMSECV non significant according to an F test (p=0.1)

if k<size(fin,2)
  h=(sel(fin(1,k))+sel(fin(1,k+1)))/2;
  hold on
  plot([1,v-1],[h h],'g');
end

if precision>0
   disp(' ')
   i=1;
   while fin(4,i)-fin(4,k)>precision
     i=i+1;
   end
   disp(['Suggested model according to the precision criterion: C.V.: ' num2str(fin(2,i)) ' obtained with ' int2str(fin(1,i)) ' variables (' int2str(fin(3,i)) ' comp.):']);
   sugg=b(1:fin(1,i));
   disp(sugg)
   h=(sel(fin(1,i))+sel(fin(1,i+1)))/2;
   hold on
   plot([1,v-1],[h h],'b');
   if (fin(4,i+1)-fin(4,k))<(fin(4,i)-fin(4,k))/2
     disp(['Better model: C.V.: ' num2str(fin(2,i+1)) ' obtained with ' int2str(fin(1,i+1)) ' variables (' int2str(fin(3,i+1)) ' comp.):']);
     suggb=b(1:fin(1,i+1));
     disp(suggb)
     h=(sel(fin(1,i+1))+sel(fin(1,i+2)))/2;
     hold on
     plot([1,v-1],[h h],'b --');
     bmp=1;
   end
end
disp(' ')
f=1;
while fin(4,f)-fin(4,k)>nonsignincr
  f=f+1;
end
disp(['Suggested model according to the F criterion: C.V.: ' num2str(fin(2,f)) ' obtained with ' int2str(fin(1,f)) ' variables (' int2str(fin(3,f)) ' comp.):']);
suggf=b(1:fin(1,f));
disp(suggf)
h=(sel(fin(1,f))+sel(fin(1,f+1)))/2;
hold on
plot([1,v-1],[h h],'r')
if (fin(4,f+1)-fin(4,k))<(fin(4,f)-fin(4,k))/2
  disp(['Better model: C.V.: ' num2str(fin(2,f+1)) ' obtained with ' int2str(fin(1,f+1)) ' variables (' int2str(fin(3,f+1)) ' comp.):']);
  suggb=b(1:fin(1,f+1));
  disp(suggb)
  h=(sel(fin(1,f+1))+sel(fin(1,f+2)))/2;
  hold on
  plot([1,v-1],[h h],'r --');
  bmf=1;
end
hold off

figure(2)
plot(fin(1,:),fin(2,:))
title(['C.V. as a function of the number of selected variables']);
hold on
plot(fin(1,k),fin(2,k),'g*')
if precision>0
  plot(fin(1,i),fin(2,i),'b*')
  if bmp==1
     plot(fin(1,i+1),fin(2,i+1),'b*')
  end
end
plot(fin(1,f),fin(2,f),'r*')
if bmf==1
   plot(fin(1,f+1),fin(2,f+1),'r*')
end
set(gca,'XLim',[0 v])
figure(gcf)
hold off
disp(' ')

figure(3)
plot(dataset(:,1:v)','r')
title(['Spectra and selected variables']);
set(gca,'XLim',[0 v])
gmin=min(min(dataset(:,1:v)));
gmax=max(max(dataset(:,1:v)));
rg=gmax-gmin;
set(gca,'YLim',[gmin-rg/5 gmax+rg/10]);
hold on
for ii=1:size(glob,2)
   plot([glob(ii)-.5 glob(ii)+.5],[gmin-rg/6.67 gmin-rg/6.67],'g');
end
if precision>0
  for ii=1:size(sugg,2)
    plot([sugg(ii)-.5 sugg(ii)+.5],[gmin-rg/10 gmin-rg/10],'b');
  end
end
for ii=1:size(suggf,2)
  plot([suggf(ii)-.5 suggf(ii)+.5],[gmin-rg/20 gmin-rg/20],'r');
end
hold off

figure(4)
plot(fin(1,:),fin(4,:))
title(['RMSECV as a function of the number of selected variables']);
hold on
plot(fin(1,:),fin(4,:),'o')
plot(fin(1,k),fin(4,k),'g*')
if precision>0
  plot(fin(1,i),fin(4,i),'b*')
  if bmp==1
     plot(fin(1,i+1),fin(4,i+1),'b*')
  end
end
plot(fin(1,f),fin(4,f),'r*')
if bmf==1
  plot(fin(1,f+1),fin(4,f+1),'r*')
end
set(gca,'XLim',[0 v])
figure(gcf)
hold off

tilefigs([2 2])

[r,co]=max(fin(2,:));disp(fin(:,1:co))

figure(1)
zoomrb
figure(2)
zoomrb
figure(3)
zoomrb
figure(4)
zoomrb

⌨️ 快捷键说明

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