function [am,ph,tap]=amph(x,Ifr,Step,F,tau,Flag);
%Вычисление изменений со временем амплитуд и фаз набора гармоник
%с заданными фиксированными частотами (скольз?ща? оценка)
%
%Вызов:      [am,ph,[t]]=amph(x,Ifr,Step,F,tau,[Flag]); 
%
%    x - исходный вектор;
%  Ifr - длина фрагмента, по которой оцениваетс? амплитуда и фаза;
% Step - шаг между последовательными оценками;
%    F - вектор частот оцениваемых гармоник (д.б. согласованы с единицами
%        измерени? tau) размерности N;
%  tau - дискретность измерений (д.б. согласована с единицами измерени? F);
% Flag - если присутствует, то на фрагменте будет сн?т линейный тренд
%
%   am - матрица амплитуд;
%   ph - матрица фаз (в единицах tau);
%    t - вектор моментов оценок (в единицах tau);
%
%ВНИМАНИЕ !!!  1. Врем? не контролируетс?. Пропуск записей будет
%                приводить к смене фазы.
%              2. Первое измерение соответствует моменту t=0.

% Хомутов С.Ю.,  20.09.99

x=x(:); F=F(:); 	% делаем столбцы, если были строки
t=(0:length(x)-1)'*tau;	% фиктивное врем? (в единицах tau)
T=1./F;			% Периоды гармоник
N=length(F);		% кол-во гармоник
%-------------------------------------------------------
am=zeros(1,N); ph=zeros(1,N); tap=[]; k=1; % инициализаци?
i1=1; i2=Ifr;

while i2<length(x),
   if nargin>5,
      [am0,ph0]=wave_fit(t(i1:i2),detrend(x(i1:i2)),T);
   else
      [am0,ph0]=wave_fit(t(i1:i2),x(i1:i2),T);
   end   
   tap(k)=(Ifr/2+(k-1)*Step)*tau;
   am(k,:)=am0(:)';
   ph(k,:)=ph0(:)';
   k=k+1;
   i1=(k-1)*Step+1;
   i2=i1+Ifr-1;
end
tap=tap(:);