OSC源码
osccalc.m for PC
function [x,nw,np,nt] = osccalc(x,y,nocomp,iter,tol)
%OSCCALC Calculates orthogonal signal correction
% The inputs are the matrix of predictor variables (x)
% and predicted variable(s) (y), scaled as desired, and
% the number of OSC components to calculate (nocomp).
% Optional input variables are the maximum number of
% iterations used in attempting to maximize the variance
% captured by orthogonal component (iter, default = 0),
% and the tolerance on percent of x variance to consider
% in formation of the final w vector (tol, default = 99.9).
% The outputs are the OSC corrected x matrix (nx) and
% the weights (nw), loads (np) and scores(nt) that were
% used in making the correction. Once the calibration is
% done, new (scaled) x data can be corrected by
% newx = x - x*nw*inv(np'*nw)*np';
%
%I/O: [nx,nw,np,nt] = osccalc(x,y,nocomp,iter,tol);
%
%See also: CROSSVAL
%Copyright Eigenvector Research, Inc. 1998
%Barry M. Wise, January 23, 1998
[m,n] = size(x);
nw = zeros(n,nocomp);
np = zeros(n,nocomp);
nt = zeros(m,nocomp);
if nargin < 4 | isempty(iter)