Mostrar el registro sencillo del ítem

Trabajo Fin de Grado

dc.contributor.advisorCerquides Bueno, José Ramónes
dc.creatorLerma Trevilla, Alfonsoes
dc.date.accessioned2021-10-26T16:05:49Z
dc.date.available2021-10-26T16:05:49Z
dc.date.issued2021
dc.identifier.citationLerma Trevilla, A. (2021). Interfaz web de intérprete de comandos de MATLAB. (Trabajo Fin de Grado Inédito). Universidad de Sevilla, Sevilla.
dc.identifier.urihttps://hdl.handle.net/11441/126877
dc.description.abstractEn un principio, el presente trabajo de fin de grado estaba basado en un programa de MATLAB que implementaba un sistema de reconocimiento de huella digital de audio, o audio fingerprint [1] [2]. El programa era capaz de identificar, usando el micrófono del ordenador, pistas de audio que hubieran sido previamente almacenadas en la memoria de programa, simulando una base de datos. Prácticamente se trataba de la misma funcionalidad que el software comercial Shazam, de hecho, el artículo con el cual comenzó la investigación para este trabajo es el que presentaba dicha tecnología [3]. La necesidad de facilitar el uso del programa y dar usabilidad a una pieza de software en la que se había empleado cierto esfuerzo, motivó la búsqueda de una manera de implementar una interfaz gráfica. Estudiando a fondo las herramientas que brinda MATLAB para convertir uno o varios scripts en una aplicación, se llegó a compilar como ejecutable para Windows, resultando en un programa que, aun funcionando correctamente apenas imprimía algo de información en la terminal, y la experiencia de uso era poco satisfactoria. El mal rendimiento de dicha aplicación sirvió de estímulo para seguir probando otros caminos, en concreto, organizar el código en un MATLAB Live Script, de forma que se pudiera visualizar un desglose de las etapas del procesamiento para la extracción de fingerprints, incluyendo representaciones gráficas. El análisis de las peculiaridades de los live scripts inspiró una inquietud que permitió tomar la decisión que más sentido pudo aportar al proyecto: salir de MATLAB. Salir de MATLAB se sentía como una buena idea tanto como una obsesión. En primer lugar, técnicamente hablando, aun pareciendo buena idea, carecía de significado. Un motor de MATLAB, o MATLAB Runtime, ¿puede ser invocado desde cualquier “lugar” de un sistema operativo? ¿Es necesario tener abierta la aplicación MATLAB? ¿Se puede usar en sí mismo el lenguaje MATLAB desde cualquier otro entorno de programación? En otras palabras, ¿existe algo parecido a una API (Application Programming Interface) para comunicarse con el interior de MATLAB desde una aplicación externa? El entorno integrado de programación (IDE) Visual Studio Code, en adelante VSCode, de licencia libre, que es utilizado ampliamente en todo el mundo por su versatilidad, cuenta con una gran cantidad de extensiones, y resulta que algunas de ellas, brindan soporte para MATLAB. En concreto, inspeccionando la extensión “MATLAB Interactive Terminal” [4] que no es más que un fragmento de código de Python, se halló la pieza que dio sentido a este rompecabezas: MATLAB Engine API para Python. Este motor es simplemente un paquete de Python que, tal y como su nombre indica, permite ejecutar funciones de MATLAB, y es uno de los requisitos para poder usar correctamente la extensión de VSCode. Una vez que fue posible ejecutar con éxito funciones propias de MATLAB desde un IDE externo, incluyendo el sistema de audio fingerprint, se llegó a un punto de inflexión en el desarrollo del proyecto [5]. Estando en un intérprete de comandos de Python, y conociendo las potentes herramientas o frameworks (entornos de trabajo) que existen para programar aplicaciones con dicho lenguaje, la ocurrencia de diseñar y desarrollar una interfaz web para acceder a MATLAB era prácticamente obvia. Aun existiendo MATLAB Online, que pagando una licencia ya ofrece exactamente eso, la motivación de hacerlo con tecnología libre y moderna fue suficiente para considerarlo algo útil. De modo que, finalmente, el presente proyecto ofrece un prototipo de interfaz web para comunicarse con un motor de MATLAB. El sistema cuenta con la estructura típica de frontend y backend de una aplicación web, pudiéndose considerar como backend la combinación de la aplicación Python que hace uso del MATLAB Engine API, y el motor en sí. Dicho backend se ha implementado usando FastAPI, un framework moderno y de alto rendimiento para desarrollar APIs en Python [6]. Para la parte de la interfaz de usuario o frontend, por comodidad y por existir algo de experiencia profesional previa, se ha optado por usar Angular, una de las plataformas de desarrollo de aplicaciones web más usadas y con más soporte hoy en día. Dicha interfaz de usuario será la que permita disfrutar de una experiencia más parecida al uso típico de la aplicación MATLAB, ya que cuenta con el intérprete de comandos y la visualización de figuras.es
dc.description.abstractInitially, this project was based on a MATLAB program that implemented an audio fingerprinting system. The code was able to identify previously stored audio files using the computer’s built-in microphone, just the way comercial software Shazam does. In fact, the article that triggered this projects’ research process is the one that introduced that technology in 2001. The quite poor experience that piece of software offered, motivated the research of implementing a user interface. At one point, after going deep into the available tools MATLAB and MathWorks provide, it was possible to compile the whole set of scripts into one single Windows executable file, but even working properly as a console application, it merely prompted some text, and the user experience was nonexistent. Furthermore, the bad performance encouraged other research paths, for example setting up a MATLAB Live Script, so a step-by-step breakdown of the program could be analized and even visualized. Exploring and the main particularities of the aforementioned Live Script allowed to make the most helpful decision so far: stepping out of MATLAB. Stepping out of MATLAB felt as a good idea the same way it felt like some sort of obsession. First of all, technically speaking, while being a good plan, it was meaningless. Can a MATLAB engine or MATLAB Runtime be invoked within “anywhere” in an operating system? Is it required to open MATLAB desktop window? Can MATLAB language be used itself from any other environment? In other words, is there such thing as an API (Application Programming Interface) that allows to communicate with MATLAB within an external application? The open source integrated development environment (IDE) Visual Studio Code, or VSCode, which is globally spread beacuse of its versatility, has a wide variety of extensions to add support for different languages, and luckily some of them provided tools related to MATLAB. More precisely, going deep into “MATLAB Interactive Terminal”, which is just a short piece of Python code, it was found the main character of this puzzle: MATLAB Engine API for Pyhton. This engine is just a Python package that, as its name suggests, allows to run MATLAB functions. Once it was posible to run MATLAB functions succesfully from VSCode, including the audio fingerprinting system, a turning point was reached. Being placed in a Python command line interface, and, taking a look at the powerful open source state-of-the-art tools available to build applications with that language, the idea of designing and developing a web interface to access MATLAB was essentially obvious. Even with the existence of MATLAB Online, which offers something similar, the fact of doing it with modern and open source technology was enough for it to be considered something. So, finally, this project delivers a prototype for a web application which interfaces with a MATLAB engine. The system is structured as a typical frontend-backend web stack, considering as backend the combination of the Pyhton application that makes use of the MATLAB Engine API, and the engine itself. This backend was implemented using FastAPI, a high performance framework designed to build APIs using Python language. For the graphical user interface or frontend, for the sake of simplicity and not having to learn yet another new technology, Angular, a widely supported web development platform, was chosen. This user interface would take it closer to the classic MATLAB application use, providing command-line interpreter functionality and the visualization of figures.es
dc.formatapplication/pdfes
dc.format.extent67es
dc.language.isospaes
dc.rightsAttribution-NonCommercial-NoDerivatives 4.0 Internacional*
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/*
dc.titleInterfaz web de intérprete de comandos de MATLABes
dc.typeinfo:eu-repo/semantics/bachelorThesises
dc.type.versioninfo:eu-repo/semantics/publishedVersiones
dc.rights.accessRightsinfo:eu-repo/semantics/openAccesses
dc.contributor.affiliationUniversidad de Sevilla. Departamento de Teoría de la Señal y Comunicacioneses
dc.description.degreeUniversidad de Sevilla. Grado en Ingeniería de las Tecnologías de Telecomunicaciónes
dc.publication.endPage51 p.es

FicherosTamañoFormatoVerDescripción
TFG-3687-LERMA TREVILLA.pdf1.681MbIcon   [PDF] Ver/Abrir  

Este registro aparece en las siguientes colecciones

Mostrar el registro sencillo del ítem

Attribution-NonCommercial-NoDerivatives 4.0 Internacional
Excepto si se señala otra cosa, la licencia del ítem se describe como: Attribution-NonCommercial-NoDerivatives 4.0 Internacional