La función matplotlib.pyplot.psd() se utiliza para trazar la densidad espectral de potencia. En el método del periodograma medio de Welch para evaluar la densidad espectral de potencia (por ejemplo, P xx ), el vector ‘x’ se divide por igual en segmentos NFFT. Cada segmento está enventanado por la ventana de función y sin tendencia por la función detrend. La superposición entre segmentos viene dada por ‘nooverlap’. Los |fft(i)|*2 de cada segmento ‘i’ se promedian juntos para calcular P, con escalado almacenado en búfer para corregir la pérdida de energía debido a la ventana.
Nota: Si len(x) < NFFT, será cero con relleno NFFT.
Sintaxis: matplotlib.pyplot.psd(x, NFFT=Ninguno, Fs=Ninguno, Fc=Ninguno, detrend=Ninguno, ventana=Ninguno, noverlap=Ninguno, pad_to=Ninguno, lados=Ninguno, scale_by_freq=Ninguno, return_line=Ninguno, *, datos=Ninguno, **kwargs)
Parámetros:
- x: es un parámetro requerido de una array 1D o una secuencia que contiene datos
- Fs: Este es un parámetro requerido que tiene un valor escalar y tiene un valor por defecto de 2. Su valor es la frecuencia de muestreo (muestras por unidad de tiempo). Este valor se utiliza para calcular frecuencias de Fourier, freqs, en ciclos por unidad de tiempo.
- ventana: esta es una array ND invocable que generalmente es una función o un vector de longitud NFFT. Su valor predeterminado es window_hanning. Cuando se pasa una función como parámetro/argumento, toma un segmento de datos como argumento y devuelve la versión en ventana del segmento.
- lados: este parámetro puede tener uno de los tres valores, a saber, ‘predeterminado’, ‘un lado’ o ‘dos lados’. Esto se utiliza para especificar qué lados del espectro se devolverán. el ‘predeterminado’ proporciona su comportamiento predeterminado, que devuelve un solo lado para datos reales y ambos para datos complejos. El valor ‘oneside’ se usa para forzar el retorno de un espectro de un solo lado, mientras que el valor ‘twoside’ es para devolver el espectro de dos lados.
- > pad_to: este parámetro contiene un valor entero que representa el número de puntos en los que se rellena el segmento de datos mientras se realiza la FFT. Es importante tener en cuenta que esto es diferente de NFFT, que establece la cantidad de puntos de datos utilizados. Esto puede proporcionar más puntos en el gráfico sin aumentar la resolución real del espectro (la distancia mínima entre los picos que se pueden resolver), lo que permite obtener más detalles. Esto también corresponde al parámetro ‘n’ en la llamada de fft(). Su valor predeterminado es Ninguno, que establece pad_to igual a NFFT.
- . NFFT: contiene un valor entero que representa la cantidad de puntos de datos utilizados en cada bloque para FFT. La más eficiente es la potencia de 2. Su valor predeterminado es 256. Se debe evitar usar esto para obtener cero rellenos, ya que puede resultar en una escala incorrecta de los resultados; en su lugar, se debe usar pad_to para el mismo propósito.
- detrend: puede aceptar tres valores, a saber, ‘ninguno’, ‘media’, ‘lineal’ o invocable y tiene un valor predeterminado como ‘ninguno’. Esta función está diseñada para eliminar la tendencia media o lineal antes de la fft-ing de cada segmento. El detrend en Matplotlib es una función a diferencia del detrend en MATLAB donde es un vector. El módulo mlab define ‘detrend_none’, ‘detrend_mean’ y ‘detrend_linear’, pero también se puede usar una función personalizada. Las strings también pueden elegir una función. El ‘ninguno’ llama a ‘detrend_none’, el ‘linear’ llama a ‘detrend_linear’ y el ‘mean’ llama a ‘detrend_mean’.
- scale_by_freq: Es un argumento opcional que acepta un valor booleano. Se utiliza para especificar si la densidad resultante debe escalarse escalando la frecuencia. Esto daría la densidad en unidades de Hz^-1. Esto hace que la integración sobre los valores de frecuencia devueltos. El valor predeterminado para la compatibilidad con MATLAB es True.
- noverlap: Es un valor entero que representa el número total de puntos que se superponen entre segmentos. El valor predeterminado para esto es 0, lo que sugiere que no hay superposición.
- Fc: es un valor entero que representa las compensaciones de x extensión de la gráfica para reflejar el rango de frecuencia que se usa cuando se obtiene una señal y luego se filtra, después de lo cual se reduce la muestra a la banda base. la ‘x’ representa la frecuencia central de x (cuyo valor predeterminado es 0)
- return_line: Es un booleano que decide si incluir la línea objetada que se grafica en los valores de retorno. Este valor es falso por defecto
Devoluciones:
- P xx : Es una array 1-D que representa el espectro de potencia P_{xx} antes de ser escalado.
- freqs: Es un arreglo !-D que representa las frecuencias correspondientes a los elementos P xx
- línea: Es una instancia de Line@D que es una línea generada por la función. Solo regresa si return_line se establece en True.
Otros parámetros:
**kwargs los argumentos de palabras clave se utilizan para controlar las propiedades de Line2D
Propiedad | Descripción |
---|---|
filtro_agg | una función de filtro que toma una array flotante (m, n, 3) y un valor de ppp que devuelve una array (m, n, 3) |
alfa | flotar |
animado | bool |
suavizado o aa | bool |
clip_box | Bbox |
clip_en | bool |
clip_path | [(Ruta, Transformar)|Parche|Ninguno] |
color o c | color |
contiene | invocable |
dash_capstyle | {‘trasero’, ‘redondo’, ‘proyectado’} |
dash_joinstyle | {‘inglete’, ‘redondo’, ‘bisel’} |
guiones | secuencia de flotadores (tinta de encendido/apagado en puntos) o (Ninguno, Ninguno) |
estilo de dibujo o ds | {‘predeterminado’, ‘pasos’, ‘pasos-pre’, ‘pasos-medio’, ‘pasos-post’}, predeterminado: ‘predeterminado’ |
figura | figura |
estilo de relleno | {‘completo’, ‘izquierda’, ‘derecha’, ‘abajo’, ‘arriba’, ‘ninguno’} |
Gid | calle |
en_diseño | bool |
etiqueta | objeto |
estilo de línea o lsl | {‘-‘, ‘–’, ‘-.’, ‘:’, ”, (desplazamiento, on-off-seq), …} |
ancho de línea o lw | flotar |
marcador | estilo marcador |
marcadorbordecolor o mec | color |
Cmarkeredgewidth o mew | flotar |
color de la cara del marcador o mfc | color |
marcadorfacecoloralt o mfcalt | color |
tamaño de marcador o ms | flotar |
marcar cada | Ninguno o int o (int, int) o rebanada o List[int] o float o (float, float) |
efectos_ruta | ResumenRutaEfecto |
recogedor | flotante o invocable[[Artista, Evento], Tuple[bool, dict]] |
radio de pico | flotar |
rasterizado | booleano o ninguno |
sketch_params | (escala: flotante, longitud: flotante, aleatoriedad: flotante) |
siesta | booleano o ninguno |
solid_capstyle | {‘trasero’, ‘redondo’, ‘proyectado’} |
solid_joinstyle | {‘inglete’, ‘redondo’, ‘bisel’} |
transformar | matplotlib.transforms.Transformar |
URL | calle |
visible | bool |
datos x | array 1D |
ydatos | array 1D |
orden Z | flotar |
Ejemplo 1:
Python3
import matplotlib.pyplot as plt import numpy as np import matplotlib.mlab as mlab import matplotlib.gridspec as gridspec # set random state for reproducibility np.random.seed(19695601) diff = 0.01 ax = np.arange(0, 10, diff) n = np.random.randn(len(ax)) by = np.exp(-ax / 0.05) cn = np.convolve(n, by) * diff cn = cn[:len(ax)] s = 0.1 * np.sin(2 * np.pi * ax) + cn plt.subplot(211) plt.plot(ax, s) plt.subplot(212) plt.psd(s, 512, 1 / diff) plt.show()
Producción:
Ejemplo 2:
Python3
import matplotlib.pyplot as plt import numpy as np import matplotlib.mlab as mlab import matplotlib.gridspec as gridspec # set random valueto ensure reproducibility random_rep = np.random.RandomState(19680801) frame_per_second = 1000 a = np.linspace(0, 0.3, 301) b = np.array([2, 8]).reshape(-1, 1) c = np.array([150, 140]).reshape(-1, 1) d = (b * np.exp(2j * np.pi * c * a)).sum(axis = 0) + 5 * random_rep.randn(*a.shape) figure, (a0, a1) = plt.subplots(ncols = 2, constrained_layout = True) e = np.arange(-50, 30, 10) f = (e[0], e[-1]) g = np.arange(-500, 550, 200) a0.psd(d, NFFT = 301, Fs = frame_per_second, window = mlab.window_none, pad_to = 1024, scale_by_freq = True) a0.set_title('Periodo-gram') a0.set_yticks(e) a0.set_xticks(g) a0.grid(True) a0.set_ylim(f) a1.psd(d, NFFT = 150, Fs = frame_per_second, window = mlab.window_none, pad_to = 512, noverlap = 75, scale_by_freq = True) a1.set_title('Welch') a1.set_xticks(g) a1.set_yticks(e) # overwriting the y-label added by `psd` a1.set_ylabel('') a1.grid(True) a1.set_ylim(f) plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA