Guide
Guide
BARRA DE HERRAMIENTAS
P A L E T A D E C O M P O N E N T E S
AREA DE DISEO
MENU - FILE
CREA NUEVA GUI ABRE UNA GUI CREADA
CIERRA GUI EN USO GUARDA GUI EN USO GUARDA GUI EN USO CON OTRO NOMBRE EXPORTAR GUI EN ARCHIVO .M
MENU - EDIT
DESHACE CAMBIOS REHACER CAMBIOS CORTAR COPIAR PEGAR LIMPIAR SELECCIONAR TODO DUPLICAR
MENU - VIEW
MENU - LAYOUT
MENU - TOOLS
EJECUTAR ALINEAR CONTROLES CONFIGURAR REJILLA EDITOR DE MENUS EDITOR DE ORDEN DE LOS CONTROLES EDITOR DE BARRA DE HERRAMIENTAS
BARRA DE HERRAMIENTAS
NUEVO
GUARDAR
COPIAR
DESHACER
ALINEAR
ORDENAR
CODIGO
BUSCADOR
ABRIR
CORTAR
PEGAR
REHACER
EDITOR DE MENU
EDITOR DE TOOLBAR
INSPECTOR
EJECUTAR
HERRAMIENTA INSPECTOR
PALETA DE COMPONENTES
COMPONENTE Push Button Slider Radio Button Check Box Edit Text Static text Pop-up Menu Listbox Toggle Button Axes Panel Button Grup ActiveX Control DESCRIPCION Genera una accin Representa un rango de valores Representa una opcin Indica el estado de una opcin Para editar texto Muestra un string de texto Provee una lista de opciones Lista deslizable Genera una accin on, off Para graficar Visualiza grupo de controles Es un panel exclusivo para radio buttons y toggle buttons Despliega controles ActiveX en Gui
EN ESTA SECCION SE PUEDE AADIR CODIGO PUEDE SER PARA CENTRAR LA GUI O PARA CARGAR IMAGENES AL GUI
[Link] = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes fer1 wait for user response (see UIRESUME) % uiwait(handles.figure1);
guidata(hObject,handles);
Esta sentencia nos garantiza que cualquier cambio o asignacin de propiedades o variables quede almacenado. Para almacenar el valor de una variable en una rutina o funcin se debe usar las siguientes lneas de cdigo: handles.nombre_de_la_variable=valor; guidata(hObject,handles);
Bach. Fernando Montenegro Daz
get(handles.nombre_del_objeto,'parmetro') get(hObject,'parmetro')
Val=get(hObject,'String'); Esta sentencia se aplica dentro de una misma rutina Val=get(handles.edit1, 'String');Esta sentencia se aplica desde otra rutina. set: Asignar valores a un parmetro especifico de un objeto. set(handles.nombre_del_objeto,'parmetro','valor') set(handles.text3,'String',suma);
FUNCIONES EN MATLAB
FUNCIONES EN MATLAB
FUNCIONES EN MATLAB
FUNCIONES EN MATLAB
MENSAJES DE USUARIO
warndlg('Esto es un aviso , Aviso'); errordlg('Esto es un mensaje de error',' Error '); helpdlg('Esto es una ayuda',' Ayuda '); msgbox('Esto es un cuadro de mensaje',' Mensaje '); questdlg('Esto es una pregunta',' Pregunta '); inputdlg('DATO , Encabezado');
FUNCION UIGETFILE
Permite abrir un archivo y obtener su nombre y direccin. [FileName Path]=uigetfile({'*.m;*.fig'}, 'Escoger Archivo')
FUNCION WINOPEN
Permite ejecutar una programa o aplicacin. winopen(strcat(Path,Filename))
Bach. Fernando Montenegro Daz
FOR
Un bloque for en cada iteracin asigna a la variable la columna i-sima de la expresin y ejecuta las rdenes. En la prctica las expresiones suelen ser del tipo escalar:escalar en cuyo caso las columnas son escalares. for variable = expresin <orden> <orden> <orden> end
Ejemplo:
for x = 1:5 disp ('x toma el valor') % escribe por pantalla el texto que se indica entre las comillas disp (x) % escribe el valor de la variable x end
WHILE
Un bloque while ejecuta las rdenes mientras todos los elementos de la expresin sean verdaderos. while <expresin> <orden> <orden> <orden> end Ejemplo: a=3; while a < 5 disp ('a es menor que 5 ya que vale') disp (a) a = a + 1; end
IF - ELSE
Un bloque if puede escribirse de varias maneras distintas. Lo que hace es evaluar una Expresin lgica y si es cierta ejecuta las rdenes que encuentre antes del end. if <expresin> <rdenes evaluadas si la expresin es verdadera> end Puede que nos interese que en caso de no ejecutar dicha orden ejecute otra distinta. Esto se lo indicaremos usando else dentro del bloque. if <expresin> <rdenes evaluadas si la expresin es verdadera> else <rdenes evaluadas si la expresin es falsa> end
IF - ELSE
Si queremos dar una estructura mucho ms completa, usaremos la ms general donde slo se evalan las rdenes asociadas con la primera expresin verdadera de todas. En cuanto la evale deja de leer el resto y se dirige directamente al end.
if <expresin1> <rdenes evaluadas si la expresin1 es verdadera> elseif <expresin2> <rdenes evaluadas si la expresin2 es verdadera> elseif <expresin3> <rdenes evaluadas si la expresin3 es verdadera> elseif else <rdenes evaluadas si ninguna otra expresin es verdadera> end
BREAK - CONTINUE
Si queremos que en un momento dado termine la ejecucin de un bucle for o un bucle while usaremos break. La sentencia continue hace que se pase inmediatamente a la siguiente iteracin del bucle for o del bucle while saltando todas las rdenes que hay entre el continue y el fin del bucle en la iteracin actual. Ejemplo: Podemos mezclar en un programa varias sentencias de este estilo. Aqu podemos ver un Programa que escribe por pantalla los primos del 1 al 100 usando las sentencias if, while y for. disp('Estos son los nmeros primos menores de 100') disp(2) for i=2:100 n=2; while n <= sqrt(i) if rem(i,n)==0 n=i; else n=n+1; end end if n~=i disp(i) end end
ENVIO DE DATOS
fprintf([Link],'%s',b) Puede ser %s,%d,%f b:dato a enviar.
Bach. Fernando Montenegro Daz
RECEPCION DE DATOS
set([Link],'Timeout',5); % 5 segundos de tiempo de espera para la recepcin de datos flushinput([Link]) %Borro lo que haya en el bufer handles.b=fscanf([Link])%Lee los datos por el puerto serie.
FINALIZAR PUERTO SERIE ESTAS LINEAS DE CODIGO DEBEN DE PROGRAMARSE EN LA FUNCION CloseRequestFcn
fclose([Link]);%cierra el Puerto Serie delete([Link])%Elimina identificador usado de la memoria clear [Link]%limpiar el identificador de la lista de variables
COMANDOS BASICOS
wavrecord(t*Fs,Fs,Ch)
Permite capturar una seal por la entrada auxiliar de la tarjeta de sonido del computador, cuyos parmetros corresponden al tiempo en segundos de captura de la seal, frecuencia de muestreo (admite 8000, 11025, 22050 y 44100), el tipo de canal (1 para mono y 2 para stereo). Fs = 11025; y = wavrecord(5*Fs, Fs, 2);
wavwrite(y,Fs,NBits,'[Link]')
Permite guardar una seal capturada en formato wav ,cuyos parmetros corresponden a la seal grabada, la frecuencia de muestreo, el nmero de bits (puede ser 8, 16, 24 o 32) y el nombre del archivo en el cual se grabar el sonido. Hay que tener en cuenta que los valores de amplitud que estn fuera del rango [-1,+1] son clipeados. Si no se especifican los NBits el programa asume por defecto 16 Bits. Si no se determina una Fs, el programa asume por defecto 8000 Hz. Por ejemplo, para guardar el sonido capturado anteriormente se emplear el siguiente comando: wavwrite(y,Fs,16,'sonido_uno.wav')
Bach. Fernando Montenegro Daz
COMANDOS BASICOS
[y,Fs,NBits]=wavread('[Link]') Permite leer y conocer los datos de un archivo en formato wav, como los valores del vector, su frecuencia de muestreo o el nmero de bits NBits por muestra. En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de muestreo y en la variable Nbits se almacena el nmero de bits por muestra del archivo con formato wav. siz=wavread('[Link]','size')
Permite saber la dimensin de los canales del archivo en formato wav. En la variable siz se almacena la dimensin del archivo en formato wav.
[n]=wavread('[Link]',Num) Permite leer las primeras N muestras del archivo en formato wav . En donde la variable Num corresponde a la cantidad de muestras que se desean tomar del archivo. [y,Fs,NBits,Opts]=wavread('[Link]') Permite obtener la informacin adicional contenida en un archivo de formato wav, como el copyright o el ttulo. En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de muestreo, en la variable Nbits se almacena el nmero de bits por muestra y en la variable Opts se almacena el resto de la informacin.
Bach. Fernando Montenegro Daz
COMANDOS BASICOS
Para escuchar o manipular vectorialmente un sonido almacenado en formato wav se utilizan dos comandos.
wavread('[Link]') sound(Var) Para el ejemplo anterior File es el nombre del archivo que se desea escuchar, los valores de amplitud deben estar en el rango [-1,+1]. La variable Var corresponde al vector que se desea escuchar cuya frecuencia de muestreo por defecto ser de 8192 Hz. Si se utiliza sound(var,Fs) el resultado ser un sonido con una frecuencia de muestreo definida por el usuario. Se asume que los valores estn dentro del rango [-1,1] ya que los valores que estn fuera del rango son clipeados. Si se emplea sound(var,Fs,Bits) sonar con una frecuencia de muestreo definida por el usuario y determinados nmero de Bits por muestra. Por ejemplo, para escuchar la seal guardada anteriormente como sonido_uno, se asigna a una variable s el comando wavread y luego se escucha con el comando sound. s= wavread('sonido_uno.wav'); sound(s,44100)
Bach. Fernando Montenegro Daz
TRANSFORMADA DE FOURIER
La transformada de Fourier se ha convertido en los ltimos aos en una herramienta de anlisis muy utilizada en el campo de la ingeniera. Entre sus muchas aplicaciones se pueden mencionar la acstica, la biomdica, el electromagnetismo, las comunicaciones, o el procesamiento de seales. La transformada de Fourier, como su nombre lo indica, transforma una seal representada en el dominio del tiempo a una seal representada en el dominio de la frecuencia, esto sin alterar su contenido de informacin. Comprender y utilizar los algoritmos de traspaso de una seal del dominio del tiempo al dominio de la frecuencia es muy importante para posteriormente obtener los parmetros bsicos a partir de los cuales se podrn realizar espectrogramas de sonidos. Para explicar el funcionamiento de la transformada de Fourier, se comenzar a partir de su formulacin bsica explicando los conceptos fundamentales de la misma. La frmula para la transformada de Fourier se presenta a continuacin:
donde N es el nmero de muestras de la ventana que se va a analizar, T es el perido de muestreo (inverso a la frecuencia de muestreo que se denomina f), n es el ndice de la frecuencia cuyo valor queremos obtener y m(kT) indica la muestra tomada en el instante kT (muestra ksima) de la ventana. La figura 5.1 ilustra de manera grfica lo arriba mencionado.
TRANSFORMADA DE FOURIER
El valor de n determina la frecuencia concreta que se va a analizar, es decir, representa una de las frecuencias en las que se va a descomponer la seal analgica. Desarrollando la ecuacin (1) podemos obtener los siguientes valores:
Bach. Fernando Montenegro Daz
donde T es el periodo de muestreo y x[nT] es una secuencia infinita de impulsos equidistantes con una amplitud correspondiente al valor de x(t). Sin embargo, resulta imposible tomar una infinidad de muestras, por lo que se limita el nmero de muestras, o dicho de otra forma, aplicamos una ventana temporal, donde solo son procesadas aquellas muestras que se encuentran dentro de dicha ventana. Para evitar solapamientos se utiliza el criterio de Nyquist que dice que se debe muestrear a ms del doble del ancho de banda de la seal original. Aunque se haya aplicado una ventana, siguen existiendo infinidad de muestras las cuales adquieren un valor de cero al no estar dentro de la ventana, obteniendo as un espectro continuo.
Bach. Fernando Montenegro Daz
FILTROS DIGITALES
Un filtro digital es un sistema que, dependiendo de las variaciones de las seales de entrada en el tiempo y amplitud, se realiza un procesamiento matemtico sobre dicha seal; generalmente mediante el uso de la Transformada rpida de Fourier; obtenindose en la salida el resultado del procesamiento matemtico o la seal de salida. Los filtros digitales tienen como entrada una seal analgica o digital y en su salida tienen otra seal analgica o digital, pudiendo haber cambiado en amplitud, frecuencia o fase dependiendo de las caractersticas del filtro digital. El filtrado digital es parte del procesado de seal digital. Se le da la denominacin de digital ms por su funcionamiento interno que por su dependencia del tipo de seal a filtrar, as podramos llamar filtro digital tanto a un filtro que realiza el procesado de seales digitales como a otro que lo haga de seales analgicas. Comnmente se usa para atenuar o amplificar algunas frecuencias. Por ejemplo, se puede implementar un sistema para controlar los tonos graves y agudos de cualquier sistema de audio. El procesamiento interno y la entrada del filtro sern digitales, por lo que puede ser necesario una conversin analgica-digital o digital-analgica para uso de filtros digitales con seales analgicas. Un tema muy importante es considerar las limitaciones del filtro de entrada debido a que la seal debe poder ser reconstruida, ver Teorema de muestreo de Nyquist-Shannon.
Bach. Fernando Montenegro Daz
FILTROS DIGITALES
Hay varios tipos de filtros as como distintas clasificaciones para estos filtros:
De acuerdo con la parte del espectro que dejan pasar y que atenan hay: Filtros pasa alto. Filtros pasa bajo. Filtros pasa banda. Banda eliminada. Multibanda. Pasa todo. Resonador. Oscilador. Filtro peine (Comb filter). Filtro ranura o filtro rechaza banda (Notch filter). De acuerdo con su orden: primer orden segundo orden
De acuerdo con el tipo de respuesta ante entrada unitaria: FIR (Finite Impulse Response) IIR (Infinite Impulse Response) TIIR (Truncated Infinite Impulse Response) De acuerdo con la estructura con que se implementa: Laticce Varios en cascada Varios en paralelo
Bach. Fernando Montenegro Daz
FILTROS DIGITALES
El filtro pasa-bajo deja pasar las frecuencias por debajo de un determinado valor, denominado frecuencia de corte. El filtro pasa-alto realiza la labor opuesta, ya que nicamente deja pasar las frecuencias superiores a la frecuencia de corte. El filtro pasa-banda deja pasar una banda de frecuencias, eliminando el resto. Se define a partir de la frecuencia central o de resonancia y el ancho de banda. El filtro de rechazo de banda acta de forma inversa al de pasa-banda. Al igual que ste, se caracteriza por la frecuencia de resonancia y el ancho de banda.
Aplicar el Filtro
Finalmente, cuando diseemos un filtro digital nos interesar poder aplicar ese filtro a una seal temporal. Eso se consigue con la funcin de MATLAB filter . y = filter(B,A,x) El vector x es la entrada y el vector y es la salida filtrada. B y A son los coeficientes del filtro digital.
Bach. Fernando Montenegro Daz
RESUMEN
ADQUISISCION DE LA SEAL FILTRAR LA SEAL
Fs = 11025; y = wavrecord(5*Fs, Fs, 1); Wn4i=[700/(.5*Fs), 900/(.5*Fs)];%Normalizar Frecuencias [B4i,A4i]=butter(5,Wn4i);%Calcular coeficientes del filtro G4i=filter(B4i, A4i,z);%Aplicar filtro size=length(x); %Normalizamos el vector x para diferenciar mejor los sonidos z=x./max(abs(x)); %Configuramos el eje de frecuencias f=(0:size/2)*Fs/size; %A continuacin calculamos las transformadas de Fourier tanto del vector original de datos como del vector normalizado x1=fft(x,size); z2=fft(z,size); %Obtenemos la magnitud y la elevamos al cuadrado para hacer mas evidentes los mximos y mnimos mag1=(abs(x1)); mag2=(abs(z2)).^2; %Despliegue de resultados subplot(211), plot(f, mag1(1:size/2+1)), axis ([0 5000 0 15]), grid on, xlabel('frecuencia'),ylabel('magnitud'), title('Espectro original'); subplot(212), plot(f, mag2(1:size/2+1)), axis ([0 5000 0 15000]), grid on, xlabel('frecuencia'),ylabel('magnitud al cuadrado'), title('Espectro Normalizado');
Bach. Fernando Montenegro Daz