diff --git a/Simulaciones/Detector_Orden.ipynb b/Simulaciones/Detector_Orden.ipynb index a55e384..7adefe9 100644 --- a/Simulaciones/Detector_Orden.ipynb +++ b/Simulaciones/Detector_Orden.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -74,11 +74,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "from scipy.optimize import curve_fit\n", "\n", "def modelo_cosenos(t, *params):\n", @@ -160,11 +159,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "\n", "def estimador_de_orden(y, orden_max, C, max_iter=10000, epsilon=1e-12, devolver_parametros=False):\n", " \"\"\"\n", @@ -247,7 +245,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -255,10 +253,10 @@ "output_type": "stream", "text": [ "Orden real: 3\n", - "Orden estimado: 4\n", - "Varianzas: [3.7188377032816926, 3.7099064438728937, 3.6910485044075623, 2.4082977259715626, 2.4043273936036753, inf, 2.389950171990722, inf]\n", - "Criterios: [np.float64(662.2055870548606), np.float64(666.503329508359), np.float64(669.455282613183), np.float64(461.46008007889515), np.float64(466.1350972119629), inf, np.float64(474.1362585935285), inf]\n", - "Parámetros óptimos: [{'amplitud': np.float64(-0.0480616545387829), 'frecuencia': np.float64(-0.01254727613082784), 'fase': np.float64(5.6630225145901925)}, {'amplitud': np.float64(1.6294124254561178), 'frecuencia': np.float64(3.242768470130581), 'fase': np.float64(1.6525282377898725)}, {'amplitud': np.float64(-0.08429321831662702), 'frecuencia': np.float64(6.9129993235227385), 'fase': np.float64(0.5002733545284419)}, {'amplitud': np.float64(-0.11051057544789585), 'frecuencia': np.float64(9.999389491130865), 'fase': np.float64(0.3362456153446631)}]\n" + "Orden estimado: 2\n", + "Varianzas: [2.323137726399167, 1.8383255140487047, 1.837929702038553, 1.8368502482272016, 1.8355685769211567, 1.8287296226777754, inf, inf]\n", + "Criterios: [np.float64(426.95937009636503), np.float64(315.4275552824338), np.float64(320.8198881079817), np.float64(326.02614158247326), np.float64(331.177142348153), np.float64(334.8107652653657), inf, inf]\n", + "Parámetros óptimos: [{'amplitud': np.float64(0.07807501614245879), 'frecuencia': np.float64(0.053583028276843), 'fase': np.float64(1.4717432359599454)}, {'amplitud': np.float64(0.9879446102229781), 'frecuencia': np.float64(9.435587905228454), 'fase': np.float64(0.37640582199551625)}]\n" ] } ], @@ -280,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -288,13 +286,13 @@ "output_type": "stream", "text": [ "Orden real: 3\n", - "Tasa de acierto: 0.13333333333333333\n", - "Órdenes estimados: [5, 4, 1, 6, 5, 4, 4, 4, 7, 2, 1, 1, 3, 4, 5, 3, 1, 5, 3, 5, 5, 4, 6, 2, 4, 6, 4, 4, 4, 3]\n" + "Tasa de acierto: 0.16666666666666666\n", + "Órdenes estimados: [4, 6, 7, 5, 3, 6, 3, 1, 5, 3, 5, 2, 4, 1, 4, 1, 6, 1, 4, 3, 6, 5, 4, 3, 8, 4, 6, 7, 4, 8]\n" ] }, { "data": { - "image/png": "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oLPiiIiIiIpTprbur776Ch07dkR8fDyys7MxceJEXLhwAY8ePSr0ir9ERERE+lCmFpn69evj8uXLaNOmDbp374709HT06tULp0+fhru7u65rJCIiIipUqVtkcnJy8M4772Dp0qX4/PPP9VETERERUYmUukXGxMQE586d00ctRERERKVSpkNLAwcOxP/93//puhYiw2JqCixenD/wFgVERHpRps6+ubm5+OGHH7B79240adIElpaWGs/PmzdPJ8URyZqJCRASInUVREQGrVRB5tq1a3B1dcX58+fRuHFjAMDly5c15uG9loiIiOh1KVWQ8fT0xJ07d7Bv3z4A+bckWLhwIapUqaKX4ohkLS8P+OOP/PG2bQFjY2nrISIyQKUKMkIIjcc7duxAenq6TgsiMhiZmUDBBSLT0oAXDsESEdGrK1Nn3wIvBhsiIiKi16lUQUahUGj1gWGfGCIiIpJKqQ8tDRkyRH1jyMzMTHz00UdaZy39+uuvuquQiIiIqAilCjKDBw/WeDxw4ECdFkNERERUGqUKMitXrtRXHURERESl9kqdfV+32bNnQ6FQICwsTOpSiIiIqBwo05V9pRAXF4dly5ahQYMGUpdCVDImJsBXX/07TkREOieLFpm0tDQMGDAAK1asgJ2dndTlEJWMqSkwYUL+wHstERHphSyCTEhICIKCguDv7//SebOyspCamqoxEBERkWEq94eW1q1bh1OnTiEuLq5E80dFRSEyMlLPVeVzDd/+WtbzKm7MDpK6BNnR1ftqpMpD/XtXAQDnq7hDZaS7WxTwfSUiyleuW2SSkpIwduxYrF69GmZmZiV6TUREBFJSUtRDUlKSnqskKpwyNwdbfxyPrT+OhzI3R+pyiIgMUrlukTl58iSSk5PVd9oGgLy8PBw8eBCLFy9GVlYWjF+4EZ9SqVRfsI+IiIgMW7kOMh07dsSff/6pMS04OBh169bFZ599phViiIiI6M1SroOMtbU16tevrzHN0tISlSpV0ppOREREb55y3UeGiIiIqDjlukWmMPv375e6BCIiIion2CJDREREsiW7Fhkiucg1Nsb81v3V40REpHsMMkR6kmNsgvltBkhdBhGRQeOhJSIiIpIttsgQ6YlCqODxIP/K0lcq14RQ8HcDEZGuMcgQ6YlZTjZ2/RACAPAatxHPTEt2mw0iIio5/kQkIiIi2WKQ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", + "image/png": "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", "text/plain": [ "
" ] @@ -342,6 +340,159 @@ "plt.legend()\n", "plt.show()\n" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Segundo intento del detector de orden\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Generador de muestras\n", + "\n", + "Esta sección se describe los cambios y mejoras implementadas en el generador de señales cardiorespiratorias sintéticas para simulaciones con radar UWB. La función ha sido adaptada para generar señales más realistas, controlables y útiles para métodos no lineales de análisis espectral.\n", + "\n", + "- Se modificaron los intervalos de frecuencia fundamentales para que reflejen rangos fisiológicos realistas para mediciones con radar UWB: la frecuencia cardíaca se estableció entre 0.6 y 1.1 Hz, lo que corresponde aproximadamente a 36 a 66 latidos por minuto, y la frecuencia respiratoria entre 0.15 y 0.35 Hz, equivalente a 9 a 21 respiraciones por minuto. Los centros de estos intervalos se utilizan como semillas para la inicialización de métodos no lineales, siendo 0.85 Hz para la cardíaca y 0.25 Hz para la respiratoria.\n", + "- Se definió que el número de componentes de cada señal corresponde al fundamental más los armónicos especificados por el usuario. Esto permite simular señales más complejas y con mayor riqueza espectral, manteniendo control sobre la cantidad de información armónica incluida.\n", + "- Los armónicos no son múltiplos exactos de la frecuencia fundamental. Se introduce un factor de dispersión aleatoria de ±5% para cada armónico, de modo que las frecuencias no sean exactos múltiplos enteros del fundamental, simulando así la inarmonicidad típica de señales fisiológicas reales.\n", + "- Las amplitudes de los componentes fueron ajustadas para reflejar la relación típica en señales UWB. La señal respiratoria es significativamente mayor que la cardíaca, con amplitudes generadas en el intervalo de 1.0 a 2.0 para respiratoria y de 0.01 a 0.1 para cardíaca, manteniendo la proporción de orden de magnitud observada en mediciones reales.\n", + "- Se mantiene la generación aleatoria de fases y offsets para cada componente dentro de rangos definidos, lo que asegura variabilidad y realismo en la forma de la señal.\n", + "- Se añadió la posibilidad de introducir ruido aditivo gaussiano con varianza especificada por el usuario. Además, la función calcula automáticamente la relación señal a ruido (SNR) resultante en decibelios, lo que permite evaluar la calidad de la señal generada en condiciones controladas.\n", + "- Los valores por defecto para la frecuencia de muestreo y la duración de la señal son 200 Hz y 30 segundos, respectivamente, parámetros adecuados para simulaciones de señales cardiorespiratorias con radar UWB.\n", + "- Se incluyen diccionarios de salida detallados: uno con los parámetros utilizados (frecuencias, amplitudes, fases, offsets, varianza y SNR), otro con los límites de cada parámetro para posibles optimizaciones, y otro con las semillas de inicialización. Además, se entrega metadata con información de la simulación, como número de componentes, frecuencia de muestreo, duración y factor de dispersión aplicado, facilitando la reutilización y análisis posterior de la señal generada." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def generar_muestras_cardiorespiratorias(N_card=3, N_resp=2, fs=200, T=30, sigma2=0.01, epsilon=0.05, seed=None):\n", + " \"\"\"\n", + " Generador de señales cardiorespiratorias sintéticas para radar UWB.\n", + "\n", + " Args:\n", + " N_card (int): número de componentes de la señal cardíaca (fundamental + armónicos).\n", + " N_resp (int): número de componentes de la señal respiratoria (fundamental + armónicos).\n", + " fs (float): frecuencia de muestreo [Hz].\n", + " T (float): duración de la señal [s].\n", + " sigma2 (float): varianza del ruido aditivo gaussiano.\n", + " epsilon (float): factor de dispersión para armónicos (±5% por defecto).\n", + " seed (int or None): semilla para reproducibilidad.\n", + "\n", + " Returns:\n", + " signal (np.array): señal sintetizada con ruido.\n", + " params (dict): diccionario con parámetros de frecuencias, amplitudes, fases.\n", + " bounds (dict): límites de cada parámetro.\n", + " seeds (dict): centros de los intervalos para inicialización no lineal.\n", + " metadata (dict): información de la simulación.\n", + " \"\"\"\n", + "\n", + " if seed is not None:\n", + " np.random.seed(seed)\n", + "\n", + " t = np.arange(0, T, 1/fs)\n", + "\n", + " # Intervalos de frecuencias fundamentales\n", + " f_card_interval = np.array([0.6, 1.1])\n", + " f_resp_interval = np.array([0.15, 0.35])\n", + " f_card_center = f_card_interval.mean()\n", + " f_resp_center = f_resp_interval.mean()\n", + "\n", + " # Amplitudes\n", + " A_card_interval = np.array([0.01, 0.1])\n", + " A_resp_interval = np.array([1.0, 2.0])\n", + " A_card_center = A_card_interval.mean()\n", + " A_resp_center = A_resp_interval.mean()\n", + "\n", + " # Fases y offsets\n", + " phase_card = np.random.uniform(0, 2*np.pi, N_card)\n", + " phase_resp = np.random.uniform(0, 2*np.pi, N_resp)\n", + "\n", + " offset_card = np.random.uniform(-0.1,0.1)\n", + " offset_resp = np.random.uniform(-0.1,0.1)\n", + "\n", + " # Frecuencia fundamental\n", + " f_card0 = np.random.uniform(*f_card_interval)\n", + " f_resp0 = np.random.uniform(*f_resp_interval)\n", + "\n", + " # Generar armónicos con dispersión\n", + " f_card = [f_card0]\n", + " for n in range(2, N_card+1):\n", + " delta = np.random.uniform(-epsilon, epsilon)\n", + " f_card.append(n*f_card0*(1+delta))\n", + "\n", + " f_resp = [f_resp0]\n", + " for n in range(2, N_resp+1):\n", + " delta = np.random.uniform(-epsilon, epsilon)\n", + " f_resp.append(n*f_resp0*(1+delta))\n", + "\n", + " f_card = np.array(f_card)\n", + " f_resp = np.array(f_resp)\n", + "\n", + " # Amplitudes para cada componente\n", + " A_card = np.random.uniform(A_card_interval[0], A_card_interval[1], N_card)\n", + " A_resp = np.random.uniform(A_resp_interval[0], A_resp_interval[1], N_resp)\n", + "\n", + " # Generar señal\n", + " signal_card = np.sum([A_card[i]*np.cos(2*np.pi*f_card[i]*t + phase_card[i]) for i in range(N_card)], axis=0) + offset_card\n", + " signal_resp = np.sum([A_resp[i]*np.cos(2*np.pi*f_resp[i]*t + phase_resp[i]) for i in range(N_resp)], axis=0) + offset_resp\n", + "\n", + " signal_clean = signal_card + signal_resp\n", + "\n", + " # Ruido y SNR\n", + " noise = np.random.normal(0, np.sqrt(sigma2), len(t))\n", + " signal_noisy = signal_clean + noise\n", + "\n", + " snr = 10*np.log10(np.var(signal_clean)/sigma2)\n", + "\n", + " # Preparar diccionarios de salida\n", + " params = {\n", + " 'f_card': f_card,\n", + " 'f_resp': f_resp,\n", + " 'A_card': A_card,\n", + " 'A_resp': A_resp,\n", + " 'phase_card': phase_card,\n", + " 'phase_resp': phase_resp,\n", + " 'offset_card': offset_card,\n", + " 'offset_resp': offset_resp,\n", + " 'sigma2': sigma2,\n", + " 'SNR_dB': snr\n", + " }\n", + "\n", + " bounds = {\n", + " 'f_card': f_card_interval,\n", + " 'f_resp': f_resp_interval,\n", + " 'A_card': A_card_interval,\n", + " 'A_resp': A_resp_interval,\n", + " 'phase': [0, 2*np.pi],\n", + " 'offset': [-0.1, 0.1]\n", + " }\n", + "\n", + " seeds = {\n", + " 'f_card_center': f_card_center,\n", + " 'f_resp_center': f_resp_center,\n", + " 'A_card_center': A_card_center,\n", + " 'A_resp_center': A_resp_center\n", + " }\n", + "\n", + " metadata = {\n", + " 'N_card': N_card,\n", + " 'N_resp': N_resp,\n", + " 'fs': fs,\n", + " 'T': T,\n", + " 'epsilon': epsilon\n", + " }\n", + "\n", + " return signal_noisy, params, bounds, seeds, metadata" + ] } ], "metadata": {