Global Index (short | long) | Local contents | Local Index (short | long)
[xy,ccuse,avl] = cov5(x,y)
For the 2x2 matrix, only returns a single value... function [xy,ccuse,avl] = cov5(x,y) COV2 Jim's "normalise by N" Covariance matrix of time series that include NaNs. ^^^^^^^^^^^^^^ COV2(X), if X is a vector, returns the variance. For matrices, where each row is an observation, and each column a variable, COV2(X) is the covariance matrix. DIAG(COV2(X)) is a vector of variances for each column, and SQRT(DIAG(COV2(X))) is a vector of standard deviations. COV2(X,Y) is COV([X Y]). See also COV, CORRCOEF, CORRCOEF2, STD. J. Little 5-5-86 Revised 6-9-88 LS Copyright (c) 1984-93 by The MathWorks, Inc. ***** REVISED BY JR, 27 Apr 1994 - normalises by n, not n-1 ***** REVISED by ID, 5 Oct 1995 - skips NaNs. XY is the covariance matrix and AVL is a row vector with the percentage of observations available in each column.
This function calls | This function is called by |
---|---|
function [xy,ccuse,avl] = cov5(x,y) [m,n] = size(x); if nargin > 1 [my,ny] = size(y); if m ~= my | n ~= ny error('X and Y must be the same size.'); end x = [x(:) y(:)]; elseif min(size(x)) == 1 x = x(:); end [m, n] = size(x); x = x - ones(m,1) * mean2(x); if m == 1 xy = 0; else for i=1:n, for j=i:n, use = find(~isnan(x(:,i))&~isnan(x(:,j))); avl(i,j) = length(use); avl(j,i) = avl(i,j); if avl(i,j) <= 1, xy(i,j) = NaN; else xy(i,j) = x(use,i)'*x(use,j)/avl(i,j); xy(j,i) = xy(i,j); end end end end % avl is fraction used to determine covariance avl = (avl/m)*100; % ccuse is the values used for the correlation coefficient if n==2 ccuse=find(~isnan(x(:,1))&~isnan(x(:,2))); end [mm,nn]=size(xy); if mm==2 xy=xy(1,2); end