%	Copyright 2005-2009 José Luis Crespo. Universidad de Cantabria
function obser=prepmatpred(matvel,orden,paso)
%Función que prepara matriz para velocidades complejas
%DATOS
%	fichero de secuencias complejas de velocidades de puntos
%	orden pedido
%   sólo preparado esquema aritmético
%   paso
%       aritmético: diferencia entre posiciones consecutivas tomadas
%       geométrico: factor de amplificación de diferencias, a partir de 1
%       foveal: factor de amplificación de marcos que promediar, a partir de 1
%   anticipación de la predicción
%RESULTADO
%	matriz de observaciones (van reales e imaginarios separados)
%   vector de predicciones (complejos)

tam=size(matvel);
%Un punto en cada fila y un instante en cada columna
nuins=tam(2);
%Como es para predecir, se supone que se puede coger en la matriz de coeficientes
  %hasta la última velocidad conocida, es decir anticipacion 0
  antici=0;

%Índices a considerar orden:nuins-1, orden-1:nuins-2, ..., 1:nuins-orden
 %Las predicciones: respuestas reales van a quedar en primer lugar
 %Como van reales e imaginarios se saca la real como 1 y la imaginaria como
 % mitad de número de columnas más 1
 %Las anteriores están justo en la columna siguiente, para orden mayor que
 %1
  indbase=(orden-1)*paso+1:nuins-antici;
 indices=repmat(indbase,orden,1);
 resta=0:orden-1;
 lote=nuins-antici-(orden-1)*paso;
 matresta=repmat(resta',1,lote);%primera fila es 0, segunda es 1, etc.
 indices=indices-(paso*matresta);%primera fila: (orden-1)*paso+1, (orden-1)*paso+2, ...,max-antici; segunda: (orden-2)*paso+1,(orden-2)*paso+2,...,max-antici-paso
 indices=indices';%primera fila:(orden-1)*paso+1,(orden-2)*paso+1,...,1; segunda: (orden-1)*paso+2, (orden-2)*paso+2, ...,2;ultima:max-antici,max-antici-paso,...
 %Las más recientes son las últimas filas
indnec=indices;
tamind=size(indnec);
 filbase=1:tam(1);
 seg=repmat(filbase,[tamind(1),1,tamind(2)]);
 filas=reshape(seg,tam(1)*tamind(1),tamind(2));
 cols=repmat(indnec,tam(1),1);
 inds=sub2ind(tam,filas,cols);
          obs=matvel(inds);
 obser=[real(obs),imag(obs)];

