Revision bb48bd1a01b1ba092203bd065d1c626f8af2aba4 (click the page title to view the current version)
function [r, lag, t] = corr_cross(signal, wind, num_av, step, f_ACP)
f_ACP = f_ACP*1e6;
n = fix((1 + max(size(signal))-wind)/step); %����� ����
t = zeros(n,1);
wind_fun = 0.5*(1-cos(2*pi*(1:wind)/(wind-1))); % ������� �������
Msignal = zeros(wind,n);
Msignal1 = zeros(wind,n,size(signal,2));
for k = 1:size(signal,2)
for j = 1:n
t(j) = step*j*1e3/f_ACP; % ������ ��� step = wind/2!!!!!!
Msignal(1:wind,j) = signal(1 + (j-1)*step:(j-1)*step + wind, k).*wind_fun'; %��������� �� ����
end
t = average(t, num_av); %
Msignal(1:wind,:) = Msignal(1:wind,:) - ones(wind,1)*mean(Msignal); %������� �������
Msignal1(:,:,k) = Msignal;
end
r = zeros(wind*2-1, k*k, n);
for i = 1:length(t)
[r(:,:,i), lag] = xcorr(squeeze(Msignal1(:,i,:)), 'coeff');
end
% [r, lag] = xcorr(Msignal);
lag = lag./f_ACP*1e6;
end
function [ out ] = average(in, num_av )
%��������� �� num_av �����
num_av = fix(num_av);
if num_av == 1
out = in;
elseif size(in,3) == 1
out = zeros(fix(size(in,1)/num_av), size(in,2));
for k = 1: fix(size(in,1)/num_av)
out(k,:) = mean(in((k-1)*num_av + 1:k*num_av, :));
end
else
out = zeros(size(in,1), size(in,2), fix(size(in,3)/num_av));
for k = 1: fix(size(in,1)/num_av)
out(:,:,k) = mean(in(:, :, (k-1)*num_av + 1:k*num_av), 3);
end
end
end