www.pudn.com > cyclostationary_toolbox.rar > synchronous_average.m, change:1998-06-24,size:1397b

```function m=synchronous_average(x,T)
%
% SYNCHRONOUS_AVERAGE
%              calculate the synchronous average of the signal x
%              with period T
%
% USAGE
%              m=synchronous_average(x,T)
%
%              if T is a scalar, then T defined the fundamental
%              cyclic period
%
%              if T is a vector, then T defines a series of once
%              per revolution impulses

% File: synchronous_average.m
% Last Revised: 24/11/97
% Created: 24/11/97
% Author: Andrew C. McCormick
% (C) University of Strathclyde

% Simple error checks
if nargin~=2
error('Incorrect number of arguments for function synchronous_average');
end
if T(1)<1
error('Synchronous period must be larger than 1 in function synchronous average');
end

% Remove excess samples due to non-integer sampling
if length(T)==1
% remove jitter samples if non-integer T
if T~=floor(T)
cp=1;np=1;
while cp+T<length(x)
cp=cp+floor(T);
np=np+T;
if (np-cp)>1
x=[x(1:cp-1) x(cp+1:length(x))];
np=np-1;
end
end
end
n=floor((length(x)-1)/T);
else
% extract time series correlated with periodic pulses
rot_positions=T;
T=floor(median(diff(rot_positions)));
nx=[];
n=length(rot_positions)-2;
for k=1:n;
cp=rot_positions(k);
nx=[nx; x(cp:cp+T-1)];
end
x=nx;
end

temp=zeros(floor(T),n);
t=(1:floor(T)*n);
temp(:)=x(t);
m=mean(temp');

```