{"id":677,"date":"2016-12-13T09:44:49","date_gmt":"2016-12-13T14:44:49","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/estg1003\/?p=677"},"modified":"2026-04-04T10:54:10","modified_gmt":"2026-04-04T15:54:10","slug":"cdf-pmf-coseno","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/stp-u02eva\/cdf-pmf-coseno\/","title":{"rendered":"cdf - Se\u00f1al coseno(x)"},"content":{"rendered":"\n<p><strong>Referencia<\/strong>: Ejemplo Le\u00f3n-Garc\u00eda 4.36 p180<\/p>\n\n\n\n<p>Sea Y=cos(X), y supondremos que X es uniformemente distribuida en el intervalo de (0, 2\u03c0]. Y puede ser vista como una muestra de una se\u00f1al sinusoidal a un instante aleatorio de tiempo que esta uniformemente distribuida en el periodo de la sinusoide.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf04.png\" alt=\"\" \/><\/figure>\n\n\n\n<p>Para encontrar la pdf, se tiene que la variable -1&lt; y &lt; 1<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f_Y(y)=\\left.\\sum_{k} \\frac{f_X(x)}{|dy\/dx|} \\right|_{x=x_k} <\/span>\n\n\n\n<p>La funci\u00f3n f<sub>X<\/sub>(x) es uniforme, por lo que el \u00e1rea del integral en el intervalo debe ser 1, es decir:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\int_{0}^{2\\pi}c dx=1 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> =(2\\pi-0)*c= 2\\pi c = 1 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c=\\frac{1}{2\\pi} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f_X(x) = \\frac{1}{2\\pi} <\/span>\n\n\n\n<p>De la figura se encuentra que la ecuaci\u00f3n tiene dos puntos de intersecci\u00f3n o dos soluciones:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_0 = \\cos ^{-1}(y) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x_1 = 2\\pi- x_0 <\/span>\n\n\n\n<p>por lo que se eval\u00faa la derivada en cada punto de intersecci\u00f3n:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\left.\\frac{dy}{dx} \\right|_{x_0}= -sin(x_0) = - sin(cos^{-1}(y))<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\alpha = \\cos^{-1}(x) <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\sin(\\alpha) = y <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x^2 + y^2 =1 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x = \\sqrt{1-y^2} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\left.\\frac{dy}{dx} \\right|_{x_0}= -\\sqrt{1-y^2} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\left.\\frac{dy}{dx} \\right|_{x_1}= -\\sqrt{1-y^2} <\/span>\n\n\n\n<p>dado que y<sub>0<\/sub> = y<sub>1<\/sub> = y<\/p>\n\n\n\n<p>Aplicando la ecuaci\u00f3n primera:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f_Y(y) = \\frac{1}{2\\pi \\sqrt{1-y^2}} + \\frac{1}{2\\pi \\sqrt{1-y^2}} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> = \\frac{1}{\\pi \\sqrt{1-y^2}} <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> -1 &lt; y &lt; 1 <\/span>\n\n\n\n<p>Gr\u00e1fica del resultado<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# pdf de una se\u00f1al senoidal\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n# INGRESO\n# n=int(input('numero de muestras: '))\nn = 200\n\n# PROCEDIMIENTO\nt  = np.linspace(-1,1,n)\nfy = np.zeros(n,dtype=float)\n# Evaluar denominador no cero\nfor i in range(0,n,1):\n    denominador = 1-t&#x5B;i]**2\n    if (denominador!=0):\n        fy&#x5B;i] = 1\/(np.pi*np.sqrt(1-t&#x5B;i]**2))\ndt = t&#x5B;1]-t&#x5B;0]\nFy = np.cumsum(fy)*dt\n\n# SALIDA\nplt.plot(t,fy,label='pdf')\nplt.plot(t,Fy,label='cdf')\nplt.xlabel('x')\nplt.legend()\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf05.png\" alt=\"senoidal pmf 05\" class=\"wp-image-793\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00e1lculo con un m\u00e9todo num\u00e9rico<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Se\u00f1al Coseno(x), pmf, cdf<\/h3>\n\n\n\n<p>Se obtiene barriendo una ventana horizontal estrecha de <strong>\u0394x<\/strong> voltios de ancho, verticalmente a lo largo de las formas de onda y despu\u00e9s midiendo la frecuencia relativa de la ocurrencia de voltajes en la ventana <strong>\u0394x<\/strong>.<\/p>\n\n\n\n<p>El eje de tiempo se divide en <strong>n<\/strong> intervalos y la forma de onda aparece <strong>n\u0394x<\/strong> veces dentro de estos intervalos en la ventana \u0394x.<\/p>\n\n\n\n<p>Para observar lo indicado usando python, se presenta el siguiente grupo de instrucciones:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Genera la se\u00f1al<\/h3>\n\n\n\n<p>En un intervalo [<strong>a<\/strong>,<strong>b<\/strong>] de tiempo, con <strong>n<\/strong> muestras en el intervalo y una se\u00f1al coseno(x) con frecuencia <strong>fs<\/strong> Hz.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Pmf de una senal peri\u00f3dica conocida\n# definir la se\u00f1al en la secci\u00f3n senal_t\nimport numpy as np\nimport scipy.signal as signal\nimport scipy.stats as stats\nimport matplotlib.pyplot as plt\n\ndef senal_t(t, fs):\n    m = len(t)\n    y = np.zeros(m, dtype=float)\n    for i in range(0,m,1):\n        y&#x5B;i] = np.cos(2 * np.pi * fs * t&#x5B;i])\n    return(y)\n\n# INGRESO\n# Frecuencia de la se\u00f1al en Hz\nfs = 5\n# Rango en tiempo de la se\u00f1al y muestras\na = 0\nb = 1\ntramos = 2000\n\n# PROCEDIMIENTO\nmuestreo = tramos+1\nt = np.linspace(a, b, muestreo)\nsenal = senal_t(t, fs)\n\n# SALIDA\nplt.plot(t,senal)\nplt.title(' Se\u00f1al sen(x)')\nplt.xlabel('t')\nplt.ylabel('se\u00f1al')\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"331\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf01.png\" alt=\"senoidal pmf 01\" class=\"wp-image-678\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Determinar la funci\u00f3n de probabilidad de masa PMF<\/h3>\n\n\n\n<p>Se divide el rango de valores posibles de la se\u00f1al en <strong>m<\/strong> intervalos.<\/p>\n\n\n\n<p>Para simplificar el conteo de valores por rango se usa la funci\u00f3n <code>scypy.stats.relfreq<\/code>, que cuenta en <strong>m<\/strong> intervalos entre el rango de la se\u00f1al, dando como resultado las frecuencias relativas a intervalos \u0394x.<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\sum_{i=0}^{N} p_i(x)=1 <\/span>\n\n\n\n<p>Si se considera aproximar la funci\u00f3n a cont\u00ednua para observaci\u00f3n, ser\u00e1 necesario compensar el vector de relativas al dividir por <strong>\u0394x<\/strong> pues el conteo relativo depende del n\u00famero de divisiones <strong>m<\/strong>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Pmf de una senal peri\u00f3dica conocida\n# definir la se\u00f1al en la secci\u00f3n senal_t\nimport numpy as np\nimport scipy.signal as signal\nimport scipy.stats as stats\nimport matplotlib.pyplot as plt\n\ndef senal_t(t, fs):\n    m = len(t)\n    y = np.zeros(m, dtype=float)\n    for i in range(0,m,1):\n        y&#x5B;i] = np.cos(2 * np.pi * fs * t&#x5B;i])\n    return(y)\n\n# INGRESO\n# Frecuencia de la se\u00f1al en Hz\nfs = 5\n# Rango en tiempo de la se\u00f1al y muestras\na = 0\nb = 1\ntramos = 2000\n\n# PROCEDIMIENTO\nmuestreo = tramos+1\nt = np.linspace(a, b, muestreo)\nsenal = senal_t(t, fs)\n\n# SALIDA\nplt.plot(t,senal)\nplt.title(' Se\u00f1al sen(x)')\nplt.xlabel('t')\nplt.ylabel('se\u00f1al')\nplt.show()\n\n# Funci\u00f3n de Probabilidad de Masa, PMF\nm = 50  # intervalos en an\u00e1lisis\n\n#PROCEDIMIENTO\nrelativa = stats.relfreq(senal, numbins = m )\ndeltax = relativa.binsize\n# considerando el deltax, para valor de PMF\nrelcontinua=relativa.frequency\/deltax\n\n# Eje de frecuencias, por cada deltax\nsenalmin = np.min(senal)\nsenalmax = np.max(senal)\nsenalrango = np.linspace(senalmin,senalmax,m)\n\n# SALIDA\nprint('frecuencia relativa:')\nprint(relativa.frequency)\nprint('Rango de Se\u00f1al')\nprint(senalrango)\nprint('Aproximaci\u00f3n a cont\u00ednua')\nprint(relcontinua)\n\n# SALIDA Grafico de PMF\nplt.subplot(211)\nplt.bar(senalrango,relativa.frequency, width=deltax*0.8)\nplt.xlabel('Amplitud de se\u00f1al')\nplt.ylabel('PMF')\n\nplt.subplot(212)\nplt.plot(senalrango,relcontinua)\nplt.ylim(ymin=0,ymax=np.max(relcontinua))\nplt.xlabel('Amplitud de se\u00f1al')\nplt.ylabel('Aproximaci\u00f3n a PDF')\nplt.show()\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code alignwide\"><code>frecuencia relativa:\n&#091; 0.045  0.034  0.023  0.018  0.017  0.014  0.014  0.012  0.012  0.011   0.011  0.01   0.01   0.01   0.009  0.009  0.009  0.008  0.008  0.009  0.008  0.007  0.008  0.008  0.007  0.008  0.007  0.007  0.007  0.007 \n ... \n0.008  0.007  0.008  0.008  0.008  0.008  0.008  0.009  0.009  0.009  0.009  0.009  0.01   0.01   0.011  0.011  0.012  0.013  0.013  0.015  0.016  0.019  0.023  0.033  0.046]\nRango de Se\u00f1al\n&#091;-0.99999877 -0.97979676 -0.95959475 -0.93939274 -0.91919073 -0.89898873 -0.87878672 -0.85858471 -0.8383827  -0.8181807  -0.79797869 -0.77777668 -0.75757467 -0.73737266 -0.71717066 -0.69696865 -0.67676664 -0.65656463 \n...\n0.63636386  0.65656587  0.67676788  0.69696988  0.71717189  0.7373739   0.75757591  0.77777791  0.79797992  0.81818193  0.83838394  0.85858595  0.87878795  0.89898996  0.91919197  0.93939398  0.95959598  0.97979799  1.        ]\nAproximaci\u00f3n a cont\u00ednua\n&#091; 2.22750138  1.68300104  1.1385007   0.89100055  0.84150052  0.69300043  0.69300043  0.59400037  0.59400037  0.54450034  0.54450034  0.49500031  0.49500031  0.49500031  0.44550028  0.44550028  0.44550028  0.39600024  \n...\n0.39600024  0.44550028  0.44550028  0.44550028  0.44550028  0.44550028  0.49500031  0.49500031  0.54450034  0.54450034  0.59400037  0.6435004   0.6435004   0.74250046  0.79200049  0.94050058  1.1385007   1.63350101  2.27700141]\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf02.png\"><img decoding=\"async\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf02.png\" alt=\"\" class=\"wp-image-679\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Determinar la Funci\u00f3n de distribuc\u00ed\u00f3n acumulada<\/h3>\n\n\n\n<p>Considere el caso discreto, solo es necesario ir acumulando los valores de \"relativa\".<\/p>\n\n\n\n<p>Al usar la aproximaci\u00f3n a cont\u00ednua, la sumatoria debe considerar el \u00e1rea bajo la curva, por lo que los valores se multiplican por \u0394x antes de acumular los valores de las frecuencias.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Funci\u00f3n distribuci\u00f3n acumulada\nacumulada=np.cumsum(relcontinua*deltax)\n\n# Salida CDF\n# plt.step(senalrango,relcontinua,label='pdf', where='post')\nplt.step(senalrango,acumulada,label='cdf', where='post')\nplt.xlabel('Amplitud de se\u00f1al')\nplt.title(' Funci\u00f3n de distribui\u00f3n acumulada , CDF')\nplt.legend()\nplt.show()\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"326\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/07\/senoidalpmf03.png\" alt=\"senoidal pmf 03\" class=\"wp-image-680\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong>Tarea<\/strong>: realice el ejercicio con otras se\u00f1ales peri\u00f3dicas.<br><strong><em>Referencia<\/em><\/strong>: Leon W Couch ap\u00e9ndice B p675<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Referencia: Ejemplo Le\u00f3n-Garc\u00eda 4.36 p180 Sea Y=cos(X), y supondremos que X es uniformemente distribuida en el intervalo de (0, 2\u03c0]. Y puede ser vista como una muestra de una se\u00f1al sinusoidal a un instante aleatorio de tiempo que esta uniformemente distribuida en el periodo de la sinusoide. Para encontrar la pdf, se tiene que la [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-stp-unidades","format":"standard","meta":{"footnotes":""},"categories":[214],"tags":[],"class_list":["post-677","post","type-post","status-publish","format-standard","hentry","category-stp-u02eva"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=677"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/677\/revisions"}],"predecessor-version":[{"id":23340,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/677\/revisions\/23340"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}