commit 885b59f664d934857d46248a72df82c546bd0416
parent bfc7031ce6863ad276d3d50d59071f11801c1476
Author: Martin J. Klöckner <mjkloeckner@gmail.com>
Date: Thu, 12 Sep 2024 12:23:52 -0300
Shrink code even more by reusing previous cells variables
Diffstat:
1 file changed, 58 insertions(+), 48 deletions(-)
diff --git a/primera_parte/tpe_primera_parte.ipynb b/primera_parte/tpe_primera_parte.ipynb
@@ -119,8 +119,8 @@
"def graph_data(x, y, title, figure_number=0, t=0, dt=0, a=0, da=0):\n",
" figure, axis = plt.subplots(num=title, figsize=(12, 6))\n",
" figure_caption = 'Figura ' + str(figure_number) + ': ' + title\n",
- "\n",
" figure.text(.5, -0.02, figure_caption, ha='center', fontsize=12)\n",
+ "\n",
" plt.plot(x, y, label='Señal de Audio')\n",
" axis.set(xlabel='Tiempo [s]', ylabel='Amplitud')\n",
" plt.grid(True)\n",
@@ -151,7 +151,7 @@
"Para poder graficar los datos se necesita saber a qué tiempo corresponde cada valor de la\n",
"señal; para eso, se utiliza el método [arange](https://numpy.org/doc/stable/reference/generated/numpy.arange.html#numpy-arange)\n",
"de la libreria [numpy](https://numpy.org/doc/stable/index.html). Este método\n",
- "devuelve un arreglo de números equidistantes del largo que recibe como parametro,\n",
+ "devuelve un arreglo de números equidistantes del largo que recibe como parámetro,\n",
"en este caso del largo de los datos leídos del archivo. Para convertirlo a segundos\n",
"se divide por la tasa de muestreo, la cual también se obtiene cuando se lee el archivo."
]
@@ -165,50 +165,50 @@
},
"outputs": [],
"source": [
- "time = np.arange(len(file1_data)) / file1_sample_rate"
+ "file1_time = np.arange(len(file1_data)) / file1_sample_rate"
]
},
{
"cell_type": "markdown",
"source": [
- "Se define una variable para almacenar el título de la figura, esto para posteriormente pasarlo como argumento a la función `graph_data`."
+ "Para normalizar la amplitud de la señal entre -1 y 1 se divide por el valor máximo que toma el tipo de dato que almacena la señal. Para obtener este valor máximo se utiliza el método [iinfo](https://numpy.org/doc/stable/reference/generated/numpy.iinfo.html#numpy-iinfo) de la librería [numpy](https://numpy.org/doc/stable/index.html)."
],
"metadata": {
- "id": "HgT4xx4pKlFb"
+ "id": "3GofoYbR1-F1"
},
- "id": "HgT4xx4pKlFb"
+ "id": "3GofoYbR1-F1"
},
{
"cell_type": "code",
"source": [
- "title = 'Gráfico de `' + str(file1_name) + '` en dominio de tiempo'"
+ "file1_data_normalized = file1_data / np.iinfo(file1_data.dtype).max"
],
"metadata": {
- "id": "hHn7vwU8KnQb"
+ "id": "eBDxfNSV1_6V"
},
- "id": "hHn7vwU8KnQb",
+ "id": "eBDxfNSV1_6V",
"execution_count": 6,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
- "Para normalizar la amplitud de la señal entre -1 y 1 se divide por el valor máximo que toma el tipo de dato que almacena la señal. Para obtener este valor máximo se utiliza el método [iinfo](https://numpy.org/doc/stable/reference/generated/numpy.iinfo.html#numpy-iinfo) de la librería [numpy](https://numpy.org/doc/stable/index.html)."
+ "Se define una variable para almacenar el título de la figura, esto para posteriormente pasarlo como argumento a la función `graph_data`."
],
"metadata": {
- "id": "3GofoYbR1-F1"
+ "id": "HgT4xx4pKlFb"
},
- "id": "3GofoYbR1-F1"
+ "id": "HgT4xx4pKlFb"
},
{
"cell_type": "code",
"source": [
- "data = file1_data / np.iinfo(file1_data.dtype).max"
+ "title = 'Gráfico de `' + str(file1_name) + '` en dominio de tiempo'"
],
"metadata": {
- "id": "eBDxfNSV1_6V"
+ "id": "hHn7vwU8KnQb"
},
- "id": "eBDxfNSV1_6V",
+ "id": "hHn7vwU8KnQb",
"execution_count": 7,
"outputs": []
},
@@ -228,7 +228,7 @@
"id": "3d95e5a6-4c46-4dc3-bf8e-1ba82af6eb1d",
"metadata": {
"id": "3d95e5a6-4c46-4dc3-bf8e-1ba82af6eb1d",
- "outputId": "7823b6da-d178-4d6b-e4f4-2d870eea3a4f",
+ "outputId": "34c96956-fde6-404c-8652-b4484f07a863",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 586
@@ -247,7 +247,7 @@
}
],
"source": [
- "graph_data(time, data, title, 1);"
+ "graph_data(file1_time, file1_data_normalized, title, 1);"
]
},
{
@@ -257,16 +257,42 @@
"id": "f424d686-a217-4edd-98d4-d066b44d9788"
},
"source": [
- "Para el segundo archivo, se repite exactamente el mismo procedimiento que el realizado para el primero, solo cambia el nombre del archivo del que se obtienen los datos; en este caso siendo `Zombie.wav`."
+ "Para el segundo archivo, se repite exactamente el mismo procedimiento que el realizado para el primero, solo cambia el nombre del archivo del que se obtienen los datos; en este caso siendo `Zombie.wav`.\n",
+ "\n",
+ "Se obtienen los datos del archivo, se normalizan los datos y se contruye una lista de numeros equidistantes que se corresponda con cada valor de la lista de datos"
]
},
{
"cell_type": "code",
+ "source": [
+ "file2_sample_rate, file2_data = wavfile.read(file2_name)\n",
+ "file2_time = np.arange(len(file2_data)) / file2_sample_rate\n",
+ "file2_data_normalized = file2_data / np.iinfo(file2_data.dtype).max"
+ ],
+ "metadata": {
+ "id": "sCac--rqwdMH"
+ },
+ "id": "sCac--rqwdMH",
"execution_count": 9,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Luego de obtener y procesar los datos, se grafican utilizando la funcion `grahp_data`:"
+ ],
+ "metadata": {
+ "id": "a0Yjhw5LwztN"
+ },
+ "id": "a0Yjhw5LwztN"
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
"id": "94dd2cf5-ff36-45ec-9593-80ecec73c414",
"metadata": {
"id": "94dd2cf5-ff36-45ec-9593-80ecec73c414",
- "outputId": "250c1468-b017-44b9-f241-e805b82083b2",
+ "outputId": "8a9f9d63-c49e-4c7f-ed31-cb3c6ced87ac",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 586
@@ -285,12 +311,8 @@
}
],
"source": [
- "file2_sample_rate, file2_data = wavfile.read(file2_name)\n",
- "data = file2_data / np.iinfo(file2_data.dtype).max\n",
- "time = np.arange(len(file2_data)) / file2_sample_rate\n",
"title = 'Gráfico de `' + str(file2_name) + '` en dominio de tiempo'\n",
- "\n",
- "graph_data(time, data, title, 2);"
+ "graph_data(file2_time, file2_data_normalized, title, 2);"
]
},
{
@@ -310,11 +332,11 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 11,
"id": "00ee7caa-47c8-43bc-8d56-2e5cf1fac363",
"metadata": {
"id": "00ee7caa-47c8-43bc-8d56-2e5cf1fac363",
- "outputId": "d2490a89-7989-46cd-e376-fd243f68c656",
+ "outputId": "1097ec60-29f2-423f-c935-b68e89ede536",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 586
@@ -333,11 +355,8 @@
}
],
"source": [
- "data = file1_data / np.iinfo(file1_data.dtype).max\n",
- "time = np.arange(len(file1_data)) / file1_sample_rate\n",
"title = 'Gráfico de `' + str(file1_name) + '` en dominio de tiempo (piano)'\n",
- "\n",
- "graph_data(time, data, title, 3, 1.13, 0.17);"
+ "graph_data(file1_time, file1_data_normalized, title, 3, 1.13, 0.17);"
]
},
{
@@ -353,11 +372,8 @@
{
"cell_type": "code",
"source": [
- "data = file1_data / np.iinfo(file1_data.dtype).max\n",
- "time = np.arange(len(file1_data)) / file1_sample_rate\n",
"title = 'Gráfico de `' + str(file1_name) + '` en dominio de tiempo (piano)'\n",
- "\n",
- "graph_data(time, data, title, 4, 1.138, 0.016, 1.14228, 0.0039)"
+ "graph_data(file1_time, file1_data_normalized, title, 4, 1.138, 0.016, 1.14228, 0.0039)"
],
"metadata": {
"colab": {
@@ -365,10 +381,10 @@
"height": 586
},
"id": "yudC1ja8nIS9",
- "outputId": "8e3f3c9f-3b16-4ac5-b169-3a69e727f8a4"
+ "outputId": "9edc482d-291a-4224-89d3-254b9c4e4184"
},
"id": "yudC1ja8nIS9",
- "execution_count": 11,
+ "execution_count": 12,
"outputs": [
{
"output_type": "display_data",
@@ -397,11 +413,8 @@
{
"cell_type": "code",
"source": [
- "data = file1_data / np.iinfo(file1_data.dtype).max\n",
- "time = np.arange(len(file1_data)) / file1_sample_rate\n",
"title = 'Gráfico de `' + str(file1_name) + '` en dominio de tiempo (trompeta)'\n",
- "\n",
- "graph_data(time, data, title, 5, 13.4, 0.02, 13.40642, 0.0022);"
+ "graph_data(file1_time, file1_data_normalized, title, 5, 13.4, 0.02, 13.40642, 0.0022);"
],
"metadata": {
"colab": {
@@ -409,10 +422,10 @@
"height": 586
},
"id": "lX46VNJYsC6w",
- "outputId": "d99e6c56-d233-4ad5-eade-15e6e05bbb5b"
+ "outputId": "68e2bd8d-cb49-4ae8-81d8-5ce18aea5a1f"
},
"id": "lX46VNJYsC6w",
- "execution_count": 12,
+ "execution_count": 13,
"outputs": [
{
"output_type": "display_data",
@@ -453,11 +466,11 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 14,
"id": "dfc2b4b4-7d3a-4da5-8b22-45d224050493",
"metadata": {
"id": "dfc2b4b4-7d3a-4da5-8b22-45d224050493",
- "outputId": "34ce94d6-7fc5-44b0-d3dc-d313d3005dc9",
+ "outputId": "00cac59b-264f-41e8-ef63-e3e4b2d31fcb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 586
@@ -476,11 +489,8 @@
}
],
"source": [
- "data = file2_data / np.iinfo(file2_data.dtype).max\n",
- "time = np.arange(len(file2_data)) / file2_sample_rate\n",
"title = 'Gráfico de `' + str(file2_name) + '` en dominio de tiempo (percusión)'\n",
- "\n",
- "graph_data(time, data, title, 6, 6.0, 0.1);"
+ "graph_data(file2_time, file2_data_normalized, title, 6, 6.0, 0.1);"
]
},
{