function [xb,yb]=elim_error(x,y,por_desv,DeltaT,TasaMuestreo); %Funcion que filtra los posibles valores que sean incorrectos % ya que difieren un cierto porcentaje de la media. %Para ello, se va calculando la media para un intervalo de valores, y si la %diferencia con respecto a la media es mayor que el admitido por %el porcentaje, se introduce en esa posición la media. %Los parámetros de entrada son los datos originales en t(x) y V(y), el %porcentaje de desviación que se considera aceptable, el intervalo de %tiempo que se usa para comparar con la media y la tasa de muestreo. %los parámetros de salida son los datos filtrados tanto en t como en V % Calculamos el número de puntos que se usan para comparar los datos num_int = DeltaT/TasaMuestreo; num_int = round(num_int); xb = x; %eje temporal filtrado yb = []; %eje en V filtrado difer = 0; %variable auxiliar n1=length(x); n2=length(y); if (n1==n2) for (i=1:n1) %para cada intervalo de valores calculamos su %media y desviacion y si la diferencia con respecto %a la media es mayor que el porcentaje introducido %se pone el valor medio. if (i>num_int) media=mean(y(i-num_int:i)); desviacion=std(y(i-num_int:i)); if desviacion==0 difer=0; else difer=(abs(media-y(i))/desviacion)*100; end else difer=0; end %si difer es cero es debido a que la diferencia con %respecto a la media es 0, o bien que estamos procesando sobre los %primeros valores antes de llegar al minimo numero sobre los que %comprobamos. Si difer es mayor que 0 es debido a que existe %diferencia con respecto a la media y ademas que estamos %comprobando a partir de un numero de puntos if(difer>=por_desv) yb(i)=media; else yb(i)=y(i); end end else errordlg('ERROR: el almacen de valores porque x e y deben ser iguales','ERROR') xb=0; yb=0; end