<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DSP on Matias Di Bernardo</title><link>https://dibernardo.netlify.app/es/categories/dsp/</link><description>Recent content in DSP on Matias Di Bernardo</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Matías Di Bernardo</copyright><lastBuildDate>Sat, 12 Aug 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://dibernardo.netlify.app/es/categories/dsp/index.xml" rel="self" type="application/rss+xml"/><item><title>Z-Plane Visualizer</title><link>https://dibernardo.netlify.app/es/p/z-plane-visualizer/</link><pubDate>Sat, 12 Aug 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/z-plane-visualizer/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/z-plane-visualizer/frontz.PNG" alt="Featured image of post Z-Plane Visualizer" />&lt;p>En el curso de &lt;em>Procesamiento Digital de Señales&lt;/em> (DSP) en la UNTREF, exploramos el plano Z para el diseño de filtros con variables discretas. Durante la clase, el profesor presentó una herramienta construida en MatLab que visualiza los gráficos de transferencia y fase en relación con las posiciones de los ceros y polos en el plano Z.&lt;/p>
&lt;p>Inspirado en esto, decidí recrear esta herramienta en Python. Aprovechando mi experiencia con la biblioteca PyGame, logré construir una aplicación en tiempo real que permite mover los polos y ceros, permitiendo a los usuarios ver cómo cambia la función de transferencia en tiempo real.&lt;/p>
&lt;h2 id="cómo-funciona">Cómo Funciona
&lt;/h2>&lt;p>Primero, mapeo las posiciones de los píxeles en el plano Z a coordenadas de acuerdo con la representación del círculo unitario. Luego, construyo la función de transferencia, donde cada cero $z_{n}$ es un término en el numerador y cada polo $z_{i}$ es un término en el denominador. Con la función de transferencia $H(z)$, puedo graficar tanto el magnitud como el gráfico de fase, que también son representaciones mapeadas de la respuesta normalizada dentro de la aplicación.&lt;/p>
$$
H(z) = \frac{\sum_{n=0}^{N} (z - z_{n})}{\sum_{i=0}^{N} (z - z_{i})}
$$&lt;p>Cada fotograma recalcula la función de transferencia. El programa funciona de manera eficiente porque almaceno los ceros y polos en arreglos, lo que permite cálculos más rápidos gracias a numpy, que ya está altamente optimizado. Esto permite visualizar los cambios en tiempo real y proporciona una comprensión más intuitiva del comportamiento del plano Z. El siguiente fragmento de código muestra como se calcula la magnitud y fase utilizando exponenciales complejas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">root&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">root&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">transfer_function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">zeros&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">poles&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">RES&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">zero&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">zeros&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">zero&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">pole&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">poles&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">den&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">pole&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">H_z&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">den&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">H_z&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ang&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">angle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">H_z&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">mag&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ang&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este proyecto está diseñado como material educativo, proporcionando a los estudiantes una herramienta práctica para comprender mejor las interacciones entre los polos y ceros en el plano Z. No está destinado como una herramienta profesional para el diseño de filtros.&lt;/p>
&lt;h2 id="funcionalidad">Funcionalidad
&lt;/h2>&lt;p>La aplicación ofrece las siguientes características:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Mostrar y mover polos/ceros&lt;/strong>: Los usuarios pueden seleccionar y mover los polos y ceros en el plano Z. Cuando la opción de simetría está activa, todos los polos y ceros seleccionados o movidos se colocan de manera simétrica respecto al eje imaginario.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Orden&lt;/strong>: Los usuarios pueden ajustar el orden de los polos y ceros desplazando la rueda del mouse. El orden puede incrementarse o disminuirse, con soporte hasta un orden de 4. El color de cada polo o cero cambia según su orden.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Información&lt;/strong>: Al pasar el cursor sobre un polo o cero, se muestra información sobre su posición, simetría y orden.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zoom&lt;/strong>: El usuario puede acercar o alejar el plano Z usando los botones de más y menos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Eliminar&lt;/strong>: El ícono de la papelera elimina todos los polos y ceros del plano. Los usuarios también pueden eliminar polos o ceros individuales haciendo clic derecho sobre ellos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gráfico de Magnitud&lt;/strong>: El espectro de magnitud mostrado en la aplicación está normalizado. Esta decisión asegura que el enfoque permanezca en la forma de la magnitud, haciendo que el gráfico sea visualmente significativo para los usuarios. Sin embargo, no captura la diferencia en los valores máximos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gráfico de Fase&lt;/strong>: La fase se muestra sin envolver entre $-\pi$ y $\pi$.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="demo">Demo
&lt;/h2>&lt;p>Aquí tienes una demostración rápida de la aplicación en acción:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045497647" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>El código fuente de este proyecto se encuentra en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/Z-Plane_Visualizer" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p></description></item><item><title>Algorítmos de modificación de escala temporal</title><link>https://dibernardo.netlify.app/es/p/algor%C3%ADtmos-de-modificaci%C3%B3n-de-escala-temporal/</link><pubDate>Thu, 09 Mar 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/algor%C3%ADtmos-de-modificaci%C3%B3n-de-escala-temporal/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/time-scale-modification-algorithms/tsm.PNG" alt="Featured image of post Algorítmos de modificación de escala temporal" />&lt;p>Los algoritmos de modificación de escala temporal se utilizan para acelerar o desacelerar la velocidad de reproducción de un audio. Cuando se cambia la tasa de muestreo de un audio, la velocidad cambia, pero también lo hace el tono (al acelerar el audio, suena con un tono más alto). Existen diferentes algoritmos que permiten modificar la velocidad del audio manteniendo constante el tono.&lt;/p>
&lt;p>La principal referencia para este estudio es el siguiente artículo, donde se describen en detalle los distintos algoritmos.&lt;/p>
&lt;blockquote>
&lt;p>A Review of Time-Scale Modification of Music Signals.&lt;br>
— &lt;cite>Jonathan Driedger y Meinard Müller&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/cite>&lt;/p>
&lt;/blockquote>
&lt;h2 id="comparación-de-algoritmos">Comparación de algoritmos
&lt;/h2>&lt;p>Existen dos algoritmos principales, el &lt;em>Overlap-and-add&lt;/em> (OLA) y el &lt;em>Phase Vocoder&lt;/em> (PV). Ambos logran buenos resultados bajo diferentes señales y condiciones. Para aprovechar las ventajas de ambos métodos, se utiliza una implementación final basada en la &lt;em>Separación Armónico-Percusiva&lt;/em> (HPS), que combina ambos algoritmos y logra los mejores resultados.&lt;/p>
&lt;h3 id="ola">OLA
&lt;/h3>&lt;p>Este método trabaja en el dominio del tiempo, superponiendo secciones del audio (ventanas) y reorganizándolas para lograr un cambio deseado en la velocidad. Este método funciona bien para señales percusivas, pero introduce artefactos cuando se utiliza con señales armónicas o tonales.&lt;/p>
&lt;h3 id="pv">PV
&lt;/h3>&lt;p>Este método opera en el dominio de la frecuencia, combinando fragmentos de audio en este dominio para lograr el cambio deseado en el tiempo. Utiliza el principio del vocoder de fase para propagar la fase entre ventanas, garantizando la continuidad al aplicarse a señales armónicas. Sin embargo, no es efectivo para señales percusivas, ya que el proceso de propagación de fase elimina los transitorios en las señales.&lt;/p>
&lt;p>Creé visualizaciones usando &lt;em>Manim&lt;/em> para mejorar mi presentación en clase. El primer video muestra cómo el algoritmo PV alinea las ventanas para garantizar transiciones suaves en la señal generada a lo largo del tiempo. Para lograrlo, se aplica una ventana gaussiana que mantiene la continuidad y suavidad, incluso al inicio y al final de la secuencia.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045495557" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>El segundo video muestra los efectos de aplicar el algoritmo PV a una señal que contiene transitorios.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045495634" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>Como predice la teoría, los transitorios desaparecen porque el algoritmo PV interrumpe la alineación vertical de la fase. Aunque estos ejemplos utilizan señales idealizadas, demuestran de manera efectiva las principales fortalezas y limitaciones del algoritmo.&lt;/p>
&lt;h3 id="hps">HPS
&lt;/h3>&lt;p>Para utilizar ambos métodos con las señales ideales, se emplea el algoritmo HPS. Este algoritmo separa la señal en sus componentes armónicas y percusivas. Funciona comparando la continuidad de la señal en la representación STFT, utilizando un filtro que compara la presencia vertical contra la horizontal en el espectrograma. Con un umbral, se puede definir una máscara binaria sobre el espectrograma para separar las partes percusivas de las secciones armónicas.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>Implementamos con éxito todos los algoritmos y los comparamos, verificando los contenidos teóricos presentados en el artículo de referencia. Durante el proceso, desarrollamos un conjunto de herramientas para utilizar estos algoritmos con el lenguaje de programación Python. Todo el código está disponible en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/TSM_Toolkit" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p>
&lt;h2 id="presentación-académica">Presentación académica
&lt;/h2>&lt;p>El estudio fue presentado junto a mis compañeros en las &lt;em>JAAS&lt;/em> (Jornadas de Acústica, Audio y Sonido). Las principales ideas y conclusiones se expusieron en la conferencia. En el siguiente informe se encuentran todos los detalles y análisis realizados para este proyecto (en español).&lt;/p>
&lt;blockquote>
&lt;p>ALGORITMOS DE MODIFICACIÓN DE ESCALA TEMPORAL.&lt;br>
— &lt;cite>Matías Di Bernardo; Matías Vereertbruhggen; Sebastían Carro&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/cite>&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>A Review of Time-Scale Modification of Music Signal &lt;a class="link" href="https://www.researchgate.net/publication/295082364_A_Review_of_Time-Scale_Modification_of_Music_Signals" target="_blank" rel="noopener"
>paper&lt;/a>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>JAAS 2023 - Algoritmos de Modificación de Escala Temporal &lt;a class="link" href="https://drive.google.com/file/d/12kPB3qBjczyx7X2XV3ZpBDo1GDO2u4qR/view?usp=sharing" target="_blank" rel="noopener"
>paper&lt;/a>.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Comparación de diferentes transformaciones tiempo-frecuencia</title><link>https://dibernardo.netlify.app/es/p/comparaci%C3%B3n-de-diferentes-transformaciones-tiempo-frecuencia/</link><pubDate>Fri, 11 Nov 2022 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/comparaci%C3%B3n-de-diferentes-transformaciones-tiempo-frecuencia/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/fourier.jpg" alt="Featured image of post Comparación de diferentes transformaciones tiempo-frecuencia" />&lt;p>Esta investigación se desarrolla en el marco de la materia &lt;em>Metodología de la Investigación&lt;/em> en UNTREF. En el artículo se pretende comparar las diferencias entre tres tipos de transformaciones tiempo-frecuencia:&lt;/p>
&lt;ol>
&lt;li>Transformada de Fourier (FT)&lt;/li>
&lt;li>Transformada Wavelet (WT)&lt;/li>
&lt;li>Transformada Huang-Hilbert (HHT)&lt;/li>
&lt;/ol>
&lt;p>El objetivo del trabajo es entender las diferencias entre estos tipos de transformaciones y profundizar mi conocimiento en el procesamiento de señales.&lt;/p>
&lt;h2 id="objetivo">Objetivo
&lt;/h2>&lt;p>El objetivo general de la investigación es determinar con qué herramienta de análisis espectral se logra una mayor precisión en la tarea de detección de tono.&lt;/p>
&lt;p>Para alcanzar este objetivo, se plantean los siguientes puntos a completar:&lt;/p>
&lt;ul>
&lt;li>Determinar los parámetros necesarios para representar la señal en el dominio espectral según cada caso.&lt;/li>
&lt;li>Elegir un algoritmo que identifique el tono de la señal en base a su representación espectral.&lt;/li>
&lt;li>Generar los datos (señales de audio) con los cuales se realizará la comparación.&lt;/li>
&lt;li>Evaluar los datos generados con los distintos métodos de análisis y aplicar procesos estadísticos para validar los resultados.&lt;/li>
&lt;li>Establecer una medida de precisión en la tarea de detección de tono.&lt;/li>
&lt;li>Comparar los resultados de los distintos análisis y determinar cuál es el que consigue una mayor precisión en la detección de tono.&lt;/li>
&lt;/ul>
&lt;p>Se eligió la tarea de detección de tono porque es una de las aplicaciones principales de este tipo de transformadas.&lt;/p>
&lt;h2 id="algoritmos">Algoritmos
&lt;/h2>&lt;p>El análisis teórico de todas las transformadas se realiza en el dominio continuo, pero para llevar a cabo los experimentos y comparaciones se trabaja en el dominio discreto, de forma que todos los cálculos se realizan digitalmente.&lt;/p>
&lt;h3 id="fft">FFT
&lt;/h3>&lt;p>La FFT es un algoritmo que optimiza la DFT (Transformada de Fourier de tiempo discreto). Con este algoritmo se obtiene la representación espectral de la señal de acuerdo al análisis de Fourier, descomponiendo una señal compleja en una suma de senos o cosenos. La DFT se calcula mediante la fórmula:&lt;/p>
$$
X_k = \sum_{n=0}^{N-1} e^{-i\frac{2\pi}{N}kn} x_n
$$&lt;p>Donde \( N \) es la cantidad de muestras de la señal y \( k \) son los números naturales de \( 0 \) hasta \( N – 1 \).&lt;/p>
&lt;h3 id="wt">WT
&lt;/h3>&lt;p>La Transformada Wavelet (WT) utiliza una función ondulatoria (wavelet) y aplica una convolución entre la señal y la función de onda elegida para determinar si esa forma ondulatoria está presente en la señal. La onda se deforma en frecuencia y amplitud, permitiendo que una sola función ondulatoria recree todo el espectro de interés.&lt;/p>
&lt;p>Para esta investigación se empleará la CDWT (Cyclic Discrete Wavelet Transform), la implementación más común al discretizar la WT. Conceptualmente, esta transformada extiende el análisis de Fourier utilizando una base de funciones ondulatorias en lugar de senos y cosenos. Se calcula así:&lt;/p>
$$
Wf[n, a^j] = \sum_{m=0}^{N-1} f[m] \psi_j[m-n]
$$&lt;p>Donde \( N \) es la cantidad de muestras de la señal, \( \psi \) es la función ondulatoria y \( j \) representa la deformación de la onda según el banco de ondas seleccionado.&lt;/p>
&lt;h3 id="hht">HHT
&lt;/h3>&lt;p>Por último, se empleará la Transformada Huang-Hilbert (HHT), que utiliza la Descomposición Empírica Modal (EMD) para descomponer la señal en subseñales relevantes. En lugar de descomponer en funciones senoidales u ondulatorias, el EMD encuentra funciones modales intrínsecas (IMF) específicas de cada señal.&lt;/p>
&lt;p>La relación entre las IMF y la frecuencia original se establece con la ecuación:&lt;/p>
$$
z(t) = f(t) + i H\{ f(t) \}
$$&lt;p>Donde \( f(t) \) es una IMF y \( H \) es la Transformada Hilbert. Esto permite proyectar la señal al eje imaginario y extraer la amplitud y la fase de cada instante, construyendo la representación espectral. Como una señal generalmente tiene múltiples IMF, este proceso se repite para todas y se suman para obtener el espectro completo.&lt;/p>
&lt;h2 id="procedimiento">Procedimiento
&lt;/h2>&lt;p>Se analizará la relación entre los tipos de representación espectral y la precisión en la detección de tono.&lt;/p>
&lt;p>Primero, se seleccionarán los parámetros para las distintas transformadas, como el número de muestras para el ventaneo temporal, que determina la resolución temporal y frecuencial.&lt;/p>
&lt;p>Para comparar los métodos, se generarán datos representativos de distintos casos de interés, modelando cuatro tipos de señales:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Monótonas&lt;/strong>: Una sola nota correspondiente a la \( F_0 \).&lt;/li>
&lt;li>&lt;strong>Politonales&lt;/strong>: Múltiples notas, donde la armonía determina la \( F_0 \).&lt;/li>
&lt;li>&lt;strong>Transiciones lentas&lt;/strong>: Cambios de \( F_0 \) graduales.&lt;/li>
&lt;li>&lt;strong>Transiciones rápidas&lt;/strong>: Cambios de \( F_0 \) abruptos.&lt;/li>
&lt;/ul>
&lt;p>Se comparará el valor real \( V(t) \) con el resultado \( P(t) \) de cada transformada, integrando la diferencia temporalmente para calcular la precisión.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>En esta etapa, solo se requería completar el plan de investigación detallando el procedimiento y los métodos de análisis. Para ello, se generaron datos de ejemplo (&lt;em>dummy data&lt;/em>) y se validaron estadísticamente los resultados esperados.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res.PNG"
width="834"
height="550"
srcset="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res_hu8387233291062647437.PNG 480w, https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res_hu2809804783985204141.PNG 1024w"
loading="lazy"
alt="Gráfico con la precisión de cada transformada según el tipo de señal analizada"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="363px"
>&lt;/p>
&lt;p>El gráfico muestra la precisión obtenida con las tres transformadas en función del tipo de señal. Se espera que la Transformada Wavelet (WT) supere a la Transformada de Fourier (FT), y que la Transformada Huang-Hilbert (HHT) sea más precisa en general.&lt;/p>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>En la tarea de detección de tono por análisis frecuencial, la Transformada Huang-Hilbert (HHT) ofrece, en la mayoría de los casos, mayor precisión que la Transformada Rápida de Fourier (FFT) y la Transformada Wavelet Cíclica (CDWT).&lt;/p>
&lt;p>La magnitud de esta diferencia depende del tipo de señal analizada, siendo las señales con transiciones rápidas las menos beneficiadas por el cambio de transformada, mientras que las señales politonales muestran las mejoras más significativas al emplear la HHT.&lt;/p>
&lt;p>En este proyecto, profundicé mis conocimientos en procesamiento de señales y comprendí los fundamentos para usar herramientas como la WT y la HHT según las características de la señal.&lt;/p>
&lt;p>Más detalles del trabajo están disponibles en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1G5kasP3BzZPVuxrXArHM72pUVlkN9b2Q/view?usp=sharing" target="_blank" rel="noopener"
>informe&lt;/a>.&lt;/p></description></item></channel></rss>