📄 modeloutframe.m
字号:
function [G,RSS,Kn,nols]=modeloutframe(v,region,p,p2,ph,id,z,vmax)
% construct linear regression models: Hz=a1*Hx1+a2*Hx2+...+a0*I
% G - models, RSS - residual sums of squres, Kn - number of parameters
% Kaijun WANG kjwang@mail.xidian.edu.cn, sunac@bigfoot.com, March 2006.
nr=size(region,1);
[nl,nx]=size(p);
kc=size(ph,2);
u1=v(1);
u2=v(length(v));
for in=1:nr
n1=region(in,2); % start of region Ui
n2=region(in,5); % end of region Ui
m=n2-n1+1;
% sum of frame elements Hx in region Ui
for j=1:nx
q=p(:,j);
h1(j)=sum(q(n1:n2)); % sum of Hx(j)
hm(j)=mean(q(n1:n2))/(u2-u1); % meanHx(j)^2
q=p2(:,j);
h2(j)=sum(q(n1:n2)); % sum of Hx(j)^2
end
% sum of cross frame elements HzHx in region Ui
for j=1:kc
q=ph(:,j);
h12(j)=sum(q(n1:n2));
end
% calculate L(i,j)
for i=1:nx
L(i,i)=h2(i)-m*(u2-u1)*hm(i)^2;
for j=i+1:nx
k=id(i,j);
L(i,j)=h12(k)-m*(u2-u1)*hm(i)*hm(j);
L(j,i)=L(i,j);
end
end
% solve for im+1 regression coefficients by least-squares
% find coefficients a for model Hz=a1*Hx(i1)+a2*Hx(i2)+ ... +a0*I
k=0;
ks=setdiff([1:nx],z); % independent frames
if vmax=='allcoef'
vm=1;
elseif vmax==0
vm=length(ks);
elseif vmax>0
vm=vmax;
end
for im=1:vm
if vmax=='allcoef'
km=ks;
nk=size(km,1);
else
km=combntns(ks,im); % combinations of frames Hx(i)
nk=size(km,1);
end
for i=1:nk
k=k+1;
ki=km(i,:);
nki=length(ki);
Lxz=L(ki,z); % Hx(i)-Hz correlated matrix
Lxx=L(ki,ki); % Hx(i)-Hx(j) correlated matrix
a=Lxx\Lxz; % im regression coefficients
c=zeros(nx,1);
c(ki)=a;
% residual sums of squres for model G (suitable for geometric learning)
s1=0; s2=0; s3=0;
for j=1:nki
q=ki(j);
s1=s1+L(q,q)*c(q)^2;
s2=s2+L(q,z)*c(q);
for l=j+1:nki
o=ki(l);
s3=s3+c(q)*c(o)*L(q,o);
end
end
RSS(k,in)=abs(L(z,z)+s1-2*s2+2*s3);
c(z)=hm(z)-hm*c; % constant coefficient
a=[a;c(z)];
if 0 % solve regression by invert matrix
x=p(n1:n2,:);
Z=x(:,z);
Y=[x(:,ki) ones(m,1)] ;
xv=inv(Y'*Y);
a=xv*Y'*Z ;
end
c([ki z])=a;
G(k,:,in)=c'; % coefficients of model G
x=find(ki>nx/2); % find polynomial items
nols(k,in)=length(x);
Kn(k,in)=im+2; % number of parameters
end % end i
end % end im
end % end in
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -