%
% CLSQUARE_S
% ________
%
%       Calcula las amplitudes complejas de los
% trenes incidente y reflejado a partir de las 
% series temporales medidas por tres sensores
% alineados en la direccion de propagacion del
% oleaje (Baquerizo, 1995).
% 
%  [f,Zi,Zr]= clsquare_s(eta,x,h,dt,eps,f1,f2)
%
%
% Variables de entrada:
% ---------------------
%   eta:   elevacion de la superficie libre (m)
%          matriz(ndat x 3)
%   x:     posiciones de los sensores (m) 
%          vector (3) 
%   h:     profundidad de agua (m) 
%   dt:    intervalo de muestreo (s)
%   eps:   tolerancia, valor minimo del denominador 
%   f1,f2: frecuencias minima y maxima de analisis 
%
% Variables de salida:
% --------------------
%   f:  vector de frecuencias (Hz)
%   Zi: vector de amplitudes de las ondas incidentes
%   Zr: vector de amplitudes de las ondas reflejadas
%
% Funciones que utiliza:
% ----------------------
%  wavnum, fdek, para el calculo del numero de onda
%
%
%
%
%                                  Asuncion Baquerizo
%   Grupo de Puertos y Costas, Universidad de Granada
%                                       Abril de 2002
%____________________________________________________
%
function [f,Zi,Zr]= clsquare_s(eta,x,h,dt,eps,f1,f2)

c = conj(fft(eta)); ndat = length(eta); df = 1/(ndat*dt);
if ndat/2==floor(ndat/2)
    ndat=ndat;
else
    ndat=ndat-1;
end
n1 = floor(f1/df)+1;
n2 = floor(f2/df)+1;

k(1) = 0;for j=2:(ndat/2)+1;f(j) = (j-1)*df;k(j) = wavnum(1/f(j),h); end 
k = k';
S_mas = sum(exp( 2*i*k*x),2); S_min = sum(exp(-2*i*k*x),2);
Bi = sum(c(1:(ndat/2)+1,:).*exp(-i*k*x(:)'),2);
Br = sum(c(1:(ndat/2)+1,:).*exp( i*k*x(:)'),2);

Zi = zeros(1,(ndat/2)+1); Zr = Zi;
for j=n1:n2
    if abs(9-S_mas(j)*S_min(j))>eps
        Zi(j) = conj((3*Br(j)-Bi(j)*S_mas(j))/(9-S_mas(j)*S_min(j)));
        Zr(j) = conj((3*Bi(j)-Br(j)*S_min(j))/(9-S_mas(j)*S_min(j)));
    end
end

Zi = Zi/ndat; Zr = Zr/ndat;
    

 
