pkg carga señal graphics_toolkit gnuplot % ========================================== =========== función Y = DFT ( y, t, f ) W = exp ( - j * 2 * pi * t ' * f ); % Nx1 × 1x8N = Nx8N Y = abs ( y * W ); % 1xN × Nx8N = 1x8N % Y (1) = SUMA (n = 1,2, ..., N): {e ^ (- B × t (n) ^ 2) × e ^ (- j2p × -4096 / 8N × t (n))} % Y (2) = SUM (n = 1,2, ..., N): {e ^ (- B × t (n) ^ 2) × e ^ (- j2p × -4095 / 8N × t (n))} % Y (8N) = SUM (n = 1,2, ..., N): {e ^ (- B × t (n) ^ 2) × e ^ (-j2p × 4095 / 8N × t (n))} Y = Y / max ( Y ); función final T = 1 ; % de resolución de tiempo (arbitrario) Nyquist = 1 / T ; % Ancho de banda de Nyquist N = 1024 ; % del tamaño de la muestra I = 8 ; % factor de interpolación de frecuencia NI = N * I ; % número de frecuencias en el ancho de banda de Nyquist freq_resolution = Nyquist / NI ; X = ( - NI / 2 : NI / 2 - 1 ); % centrar las frecuencias en el origen freqs = X * freq_resolution ; % de frecuencias reales a muestrear y graficar% (https://octave.org/doc/v4.2.1/Graphics-Object-Properties.html#Graphics-Object-Properties) set ( 0 , "DefaultAxesXlim" , [ min ( freqs ) max ( freqs )]) set ( 0 , "DefaultAxesYlim" , [ 0 1.05 ]) set ( 0 , "DefaultAxesXtick" , [ 0 ]) set ( 0 , "DefaultAxesYtick" , []) % set (0, "DefaultAxesXlabel", "frecuencia") set ( 0 , "DefaultAxesYlabel" , "amplitud" )# { Muestra un funtion en intervalos de T , y mostrar solamente el Nyquist ancho de banda [ - 0.5 / T 0,5 / T ]. Técnicamente esto es simplemente un ciclo de un periódico DTFT , pero ya nos podemos ' t ver la periodicidad , se ve la misma como un continuo Transformada de Fourier , siempre que el ancho de banda real sea significativamente menor que el ancho de banda de Nyquist ; yo . e . sin alias . #} % Elegimos la función gaussiana e ^ {- B (nT) ^ 2}, donde B es proporcional al ancho de banda. B = 0,1 * Nyquist ; x = ( - N / 2 : N / 2 - 1 ); % centrar las muestras en el origen t = x * T ; % de tiempos de muestreo reales y = exp ( - B * t . ^ 2 ); % 1xN matriz Y = DFT ( y , t , freqs ); % Matriz 1x8N% Vuelva a muestrear para reducir la periodicidad de la DTFT. Pero traza el mismo rango de frecuencia. T = 8 / 3 ; t = x * T ; % 1xN z = exp ( - B * t . ^ 2 ); % 1xN Z = DFT ( z , t , frecuencias ); % 1x8N % ============================================= ======== hfig = figure ( "posición" , [ 1 1 1200 900 ]); x1 = . 08 ; % margen izquierdo para la anotación x2 = . 02 ; % margen derecho dx = . 05 ; % de espacios en blanco entre gráficos y1 = . 08 ; % margen inferior y2 = . 08 ; % margen superior dy = . 12 ; % de espacio vertical entre filas altura = ( 1 - y1 - y2 - dy ) / 2 ; % de espacio asignado para cada una de las 2 filas ancho = ( 1 - x1 - dx - x2 ) / 2 ; % de espacio asignado para cada una de las 2 columnas x_origin1 = x1 ; y_origin1 = 1 - y2 - altura ; % posición de la fila superior y_origin2 = y_origin1 - dy - altura ; x_origin2 = x_origin1 + dx + ancho ;% =============================================== ====== % Grafique la transformada de Fourier, S (f) subtrama ( "posición" , [ x_origin1 y_origin1 anchura altura ]) en la zona ( freqs , Y , "FaceColor" , [ 0 . 4 . 6 ]) % xlabel ( "frecuencia")% en blanco licencia para la entrada de LibreOffice % ===== ================================================ % Trazar la DTFT subtrama ( "posición" , [ x_origin1 y_origin2 anchura altura ]) área ( freqs , Z , "FaceColor" , [ 0 . 4 . 6 ]) xlabel ( "frecuencia" ) % ============ =========================================== % Muestra S (f) a retratar los coeficientes de la serie de Fourier subparcelas ( "posición" , [ x_origin2 y_origin1 anchura altura ]) vástago ( freqs ( 1 : 128 : end ), Y ( 1 : 128 : final ), "-" , "Color" , [ 0 . 4 . 6 ]); set ( findobj ( "Tipo" , "línea" ), "Marcador" , "ninguno" )% xlabel ("frecuencia")% deje en blanco para el cuadro de entrada de LibreOffice en % ================================== ===================== % Muestra la DTFT para representar una DFT FFT_indices = [ 32 : 55 ] * 128 + 1 ; DFT_indices = [ 0 : 31 56 : 63 ] * 128 + 1 ; subparcelas ( "posición" , [ x_origin2 y_origin2 anchura altura ]) vástago ( freqs ( DFT_indices ), Z ( DFT_indices ), "-" , "color" , [ 0 . 4 . 6 ]); mantenga en la raíz ( freqs ( FFT_indices ), Z ( FFT_indices ), "-" , "Color" , "rojo" ); conjunto ( findobj ( "Tipo" , "línea" ), "Marcador" , "ninguno" ) xlabel ( "frecuencia" ) cuadro en % ==================== =================================== % Salida (o utilice la función de exportación en la barra de herramientas de la figura GNUPlot). imprimir ( hfig ,"-dsvg" , "-S1200,800" , "-color" , 'C: \ Users \ BobK \ Transformada de Fourier, serie de Fourier, DTFT, DFT.svg' )