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

📄 datageometrize.m

📁 这是一个支持向量机的工具
💻 M
字号:
function [xfit,bx,v,vi,cut]=datageometrize(X,nu,ncut)
% constructing local curves f(u) as local regions to form curve manifolds
% nu: geometrization parameter, cut: side-part length in two sides of f(u)

[nl,nx]=size(X);           % data length and number of variables
vi=fix(nl/6);                % limit geometrization length 3nu to under nl/2
nu=min([nu vi]);
k=0;
if ncut<0  k=abs(ncut); end
cut=ncut;
if ncut<1   cut=nu; end
v1=cut+1;
nc=ceil(nl/nu);            % number of local curves
nd=nu+cut+cut;
vi=[];                         %vi=round(nl/(5*nu))+1;  cut=min([nu vi]);
nv=max([ceil(nd/nu) 2]);

for j=1:nc
u=[1:nd]';                   % local coordinate u, and its scope 
v=[v1:nd-cut]';            % middle u selected to form Ui
tu=nu*(j-1)+u-cut;      % uniform coordinate of each local u
tv=nu*(j-1)+[1:nu]';    % uniform coordinate of local v
if k>0 tk=k*nu*(j-1)+[1:k*nu]; end
 if j<nv
  lu=find(tu>0);            % u=[1:cut+nu*j]'
  lt=nd-length(lu);
  tu=[tu(lu);[tu(nd)+(1:lt)]'];
  v=tv; 
  vi=[vi;tv(1) tv(nu)];
 elseif j>nc-nv
  lt=length(tv);
  if tv(lt)>nl
    tv=tv(1):nl;
    if k>0 tk=tk(1):k*nl; end
    v=[v(1):v(length(tv))]'; end
  lt=length(tu);
  if tu(lt)>nl
    tu=tu(1):nl;
    u=[1:length(tu)]'; end
  lt=length(tu);
  if lt==1
    tu=[tu-2 tu-1 tu];
    u=[1 2 3]';
    v=3;
  elseif lt==2
    tu=[tu(1)-1 tu];
    u=[1 2 3]';
    v=v+1; end
 end
 
% let Ui of Mx be x=f(u)=a*u^2+b*u+c,bx=[a b c]
 if k>0 vk=v(1):(1/k):v(length(v))+(1-1/k); end
 for i=1:nx
  % e.g. tu=[6:25], u=[1:20], v=[6:15] 
  x=X(tu,i);                % nd local data from X(:,i)
  % return jth curve fitting data x, or x=f(u)
  bx(j,:,i)=datafit(u,x,2); 
  % return fitted values at v by x=f(v)
  xfit(tv,i)=polyval(bx(j,:,i),v);
  if k>0 xfit2(tk,i)=polyval(bx(j,:,i),vk); end
 end
end

if k>0  xfit=xfit2; end
v=[v1:nd-cut]';

⌨️ 快捷键说明

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