function [X,Y,Xb,Yb,max,min,mediana,media,desv,... xmax_loc,ymax_loc,xmin_loc,... ymin_loc,fecha,hora]=func_principal(tasa_muestreo,num_canales,por_desv,... DeltaT,nombreFichero) %Función que nos permite realizar el procesado temporal de las señales, sus %parametros de entrada son los siguientes: %tasa de muestreo: Tasa a la que muestrea la tarjeta de adquisicion de datos %num_canales: Numero de canales conectados a la tarjeta de adquisicion de datos %por_desv: Porcentaje de desviacion permitida para los datos iniciales %DeltaT: Intervalo de tiempo en el que vamos a comprobar los % valores parafiltrar %Como parámetros de salida tenemos: %X,Y: Datos en tiempo y V de la señal original %Xb,Yb: Datos en tiempo y V de la señal filtrada %max,min,mediana,media,desv: Principales estadísticas de los datos % filtrados tal y como indican sus nombres respectivamente %xmax_loc,ymax_loc....:valores de los máximos y mínimos locales tanto en % tiempo como en tensión X = []; %Instantes de tiempo originales Y = []; %Valores de tensión de los datos originales Xb = []; %Instantes de tiempo filtrados Yb = []; %Valores de tensión filtrados Xb1 = []; %Variable auxiliar Yb1 = []; j = 0; %Variable que usamos para construir el vector de tiempo hacer = 0; %Decide sobre que canal realizamos la caracterizacion en un intervalo J=[]; %si hacer=-1 no deseamos hacer caracterizaciones s=[]; m=0; n=0; fecha=''; hora=''; [H,J]=wk1read(nombreFichero); %leemos del fichero de datos %se incorpora H porque el archivo netprobe contiene datos [m,n]=size(J); for i=3:m s=[s;J{i}]; end for i=1:m-2 temp=str2double(s(i,21:25)); hum=str2double(s(i,35:36)); c1=str2double(s(i,39:42)); c2=str2double(s(i,45:48)); c3=str2double(s(i,51:54)); c4=str2double(s(i,57:60)); c5=str2double(s(i,63:66)); c6=str2double(s(i,69:72)); c7=str2double(s(i,75:78)); c8=str2double(s(i,81:84)); Y=[Y;temp,hum,c1,c2,c3,c4,c5,c6,c7,c8]; end s=''; s=J{m}; %El último elemento que aparece en la tabla es la primera captura fecha=s(1:10); hora=s(12:19); [M,N]=size(Y); X=[0:tasa_muestreo:(M-1)*tasa_muestreo]; %Creamos el vector temporal inicial if (M==length(X)) warndlg('Se han leído los datos correctamente','AVISO') else errordlg('ERROR: X e Y tienen distinta longitud','ERROR') end TiempoTotal = (M-1)*tasa_muestreo; %longitud temporal total %comprobamos que intervalo de tiempo, DeltaT, sobre el que vamos a realizar %la caracterizacion es inferior al tiempo total introducido, en caso %contrario se igual al tiempo total y no se realiza ningun filtrado por %construccion if(DeltaT>=TiempoTotal) warndlg('DeltaT es igual al tiempo total de medida') DeltaT = TiempoTotal; end %De todos los valores obtenidos decimos que son incorrectos los que %contienen un % de desviacion mayor que la permitida. Para ello lo hacemos %comparando el valor con el numero de elementos que deseemos. Si la %desviacion es muy grande se pone el valor de la media. %DeltaT TasaMuestreo = tasa_muestreo; for i=1:(num_canales+2) [Xb1,Yb1]=elim_error(X,Y(:,i)',por_desv,DeltaT,TasaMuestreo); Xb=[Xb,Xb1']; Yb=[Yb,Yb1']; end %usamos la funcion de caracterizacion general para obtener los parametros %mas importantes de cada lista de valores. Se han introducido los datos una %vez filtrados [max,min,mediana,media,... desv,xmax_loc,ymax_loc,... xmin_loc,ymin_loc]=caract_general(Xb,Yb,num_canales,2); %el último valor de esta función vale 2 porque estamos caracterizando todos %los datos, para una porción vae 0