function [PXX, FREQ] = cpsd(X, Y, varargin) //This function estimates cross power spectrum of data x and y by the Welch (1967) periodogram/FFT method. //Calling Sequence //[PXX, FREQ] = cpsd(X, Y) //[...] = cpsd(X, Y, WINDOW) //[...] = cpsd(X, Y, WINDOW, OVERLAP) //[...] = cpsd(X, Y, WINDOW, OVERLAP, NFFT) //[...] = cpsd(X, Y, WINDOW, OVERLAP, NFFT, FS) //[...] = cpsd(X, Y, WINDOW, OVERLAP, NFFT, FS, RANGE) //cpsd(...) //Parameters //X, Y: Matrix or integer //Description //Estimate cross power spectrum of data X and Y by the Welch (1967) periodogram/FFT method. //Examples // [a, b] = cpsd([1,2,3],[4,5,6]) //ans = // b = // 0. // 0.25 // 0.5 // a = // 2.7804939 // 4.4785583 + 1.0743784i // 0.7729851 funcprot(0); rhs=argn(2); lhs=argn(1); if(rhs<2 | rhs>7) then error("Wrong number of input arguments."); end if (lhs<2 | lhs>2) error("Wrong number of output arguments."); end select(rhs) case 2 then [PXX, FREQ] = callOctave("cpsd",X, Y); case 3 then [PXX, FREQ] = callOctave("cpsd",X, Y, varargin(1)); case 4 then [PXX, FREQ] = callOctave("cpsd",X, Y, varargin(1), varargin(2)); case 5 then [PXX, FREQ] = callOctave("cpsd",X, Y, varargin(1), varargin(2), varargin(3)); case 6 then [PXX, FREQ] = callOctave("cpsd",X, Y, varargin(1), varargin(2), varargin(3), varargin(4)); case 7 then [PXX, FREQ] = callOctave("cpsd",X, Y, varargin(1), varargin(2), varargin(3), varargin(4), varargin(5)); end endfunction