def test_signal(): pathdir_out = "chap1_out" signal = (SinSignal(freq=400, amp=1.0) + SinSignal(freq=600, amp=0.5) + SinSignal(freq=800, amp=0.25)) signal.plot() wave2 = signal.make_wave(duration=1) wave2.apodize() wavfilename = pathdir_out + "/wave_400_600_800.wav" wave2.write(wavfilename) spectrum = wave2.make_spectrum() #spectrum.plot(high=2000) fig1 = pathdir_out + "/wave_400_600_800.jpg" spectrum.plot_writefile(high=2000, filename=fig1)
def test_leak(): signal = SinSignal(freq=440) duration = signal.period * 30 wave = signal.make_wave(duration) #wave.plot() #decorate(xlabel='Time (s)') spectrum = wave.make_spectrum() #spectrum.plot(high=880) #decorate(xlabel='Frequency (Hz)', ylabel='Amplitude') duration2 = signal.period * 30.25 wave2 = signal.make_wave(duration2) #wave2.plot() #decorate(xlabel='Time (s)') spectrum2 = wave2.make_spectrum() #plot all you need in on figure plt.figure() plt.subplot(3, 2, 1) plt.plot(wave.ts, wave.ys) plt.subplot(3, 2, 2) i = find_index(880, spectrum.fs) plt.plot(spectrum.fs[:i], spectrum.amps[:i]) plt.subplot(3, 2, 3) plt.plot(wave2.ts, wave2.ys) plt.subplot(3, 2, 4) i = find_index(880, spectrum2.fs) plt.plot(spectrum2.fs[:i], spectrum2.amps[:i]) wave2.hamming() spectrum2 = wave2.make_spectrum() plt.subplot(3, 2, 5) plt.plot(wave2.ts, wave2.ys) plt.subplot(3, 2, 6) i = find_index(880, spectrum2.fs) plt.plot(spectrum2.fs[:i], spectrum2.amps[:i]) plt.show()
import sys sys.path.insert(1, "dsp-modulo") from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import read_wave import matplotlib.pyplot as plt sonido = SinSignal(freq=440, amp=1, offset=0) wave_sonido = sonido.make_wave(duration=1.0, start=0, framerate=44100) decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") #wave_sonido.plot() #plt.show() wave_sonido.write("sonido_original.wav") print(type(wave_sonido)) print("Inicio: " + str(wave_sonido.start)) print("Duracion: " + str(wave_sonido.duration)) print("Frecuencia: " + str(wave_sonido.framerate)) wave_sonido.framerate = wave_sonido.framerate / 2 wave_sonido.write("sonido_modificado.wav") print("Frecuencia de muestreo modificada: " + str(wave_sonido.framerate))
from thinkdsp import TriangleSignal, SquareSignal from thinkdsp import decorate import matplotlib.pyplot as plt import numpy as np square = SquareSignal(1100) cysquare = square.make_wave(duration=2, framerate=10000) cysquare.play('temp11.wav') square = square.make_wave(duration=0.5, framerate=10000) square.make_spectrum().plot() decorate(xlabel='Frequency (Hz)') from thinkdsp import SinSignal sin = SinSignal(500).make_wave(duration=2, framerate=10000) sin.play('temp22.wav') plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate from thinkdsp import read_wave from thinkdsp import play_wave import matplotlib.pyplot as plt seno = SinSignal(freq=440, amp=1, offset=0) seno2 = SinSignal(freq=340, amp=1, offset=0) seno3 = SinSignal(freq=600, amp=0.7, offset=0) waveSeno = seno.make_wave(duration=1, start=0, framerate=44100) waveSeno2 = seno2.make_wave(duration=1, start=1, framerate=44100) waveSeno3 = seno3.make_wave(duration=1, start=2, framerate=44100) resultante = waveSeno + waveSeno2 + waveSeno3 decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") resultante.plot() resultante.write("sonido.wav") plt.show()
from thinkdsp import CosSignal, SinSignal from thinkdsp import decorate import matplotlib.pyplot as plt cos_sig = CosSignal(freq=440, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=0.5, offset=0) mix = sin_sig + cos_sig wave = mix.make_wave(duration=0.01, start=0, framerate=11025) wave.play('test3.wav') wave.normalize() wave.make_audio() plt.subplot(2, 1, 1) wave.plot() spectrum = wave.make_spectrum() plt.subplot(2, 1, 2) spectrum.plot(high=5000) decorate(xlabel='Frequency (Hz)') plt.show()
wave=spectrum.make_wave() audio = Audio(data=wave.ys, rate=wave.framerate) audio # 带阻 segment = wave.segment() spectrum = segment.make_spectrum() spectrum.band_stop(1000,3000) spectrum.plot() decorate(xlabel='Frequency (Hz)') wave=spectrum.make_wave() audio = Audio(data=wave.ys, rate=wave.framerate) audio cos_sig = CosSignal(freq=440, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=0.5, offset=0) mix = sin_sig + cos_sig period = mix.period segment = wave.segment(start=0, duration=period*3) wave = mix.make_wave(duration=1, start=0, framerate=11025) segment = wave.segment(start=0, duration=period*3) segment.plot() decorate(xlabel='Time (s)') spectrum = segment.make_spectrum() spectrum.plot() decorate(xlabel='Frequency (Hz)') wave = mix.make_wave(duration=1, start=0, framerate=11025) audio = Audio(data=wave.ys, rate=wave.framerate) audio
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate #Módulo para graficar import matplotlib.pyplot as plt #Crear señal senoidal seno = SinSignal(freq=329.628, amp=50, offset=0) coseno = CosSignal(freq=41.2035, amp=30, offset=0) #Crear gráfica en memoria y damos propiedades seno.plot() decorate(xlabel='Tiempo (s)') decorate(ylabel='Amplitud') coseno.plot() plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate import matplotlib.pyplot as plt seno = SinSignal(freq=20, amp=1, offset=0) coseno = CosSignal(freq=50, amp=1.3, offset=0) waveSeno = seno.make_wave(duration=1, start=0, framerate=11025) waveCoseno = coseno.make_wave(duration=1, start=0, framerate=11025) waveResultante = waveSeno + waveCoseno decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") waveSeno.plot() waveCoseno.plot() plt.show() decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") waveResultante.plot() plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import matplotlib.pyplot as plt seno = SinSignal(freq=10, amp=1.0, offset=0) wave_seno = seno.make_wave(duration=1.0, start=0, framerate=22050) wave_seno_frecuencia_muestreo_baja = seno.make_wave(duration=1.0, start=0, framerate=21) decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") wave_seno.plot() wave_seno_frecuencia_muestreo_baja.plot() plt.show() decorate(xlabel="Tiempo (s)") decorate(ylabel="Amplitud") wave_seno_frecuencia_muestreo_baja.plot() plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import SquareSignal from thinkdsp import decorate import thinkplot import numpy señalRectangular = SquareSignal(freq=2, amp=1.0, offset=numpy.pi) waveRectangular = señalRectangular.make_wave(duration=1, start=0, framerate=44100) señalSenoidal = SinSignal(freq=2, amp=1.0, offset=0) harmonico1 = SinSignal(freq=señalSenoidal.freq * 3, amp=0.3, offset=0) harmonico2 = SinSignal(freq=señalSenoidal.freq * 5, amp=0.25, offset=0) harmonico3 = SinSignal(freq=señalSenoidal.freq * 7, amp=0.2, offset=0) harmonico4 = SinSignal(freq=señalSenoidal.freq * 9, amp=0.15, offset=0) harmonico5 = SinSignal(freq=señalSenoidal.freq * 11, amp=0.1, offset=0) harmonico6 = SinSignal(freq=señalSenoidal.freq * 13, amp=0.05, offset=0) mezcla = señalSenoidal + harmonico1 + harmonico2 + harmonico3 + harmonico4 + harmonico5 + harmonico6 waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100) waveRectangular.plot() waveMezcla.plot() thinkplot.show() espectroRectangular = waveRectangular.make_spectrum() espectroMezcla = waveMezcla.make_spectrum()
from thinkdsp import SinSignal import numpy as np import matplotlib.pyplot as plt from thinkdsp import decorate from thinkdsp import Chirp from thinkdsp import ExpoChirp from thinkdsp import SinSignal from ipywidgets import interact, interactive, fixed import ipywidgets as widgets from thinkdsp import normalize, unbias from thinkdsp import read_wave # 3-1 # 设置一个sin信号泄露,周期是30.25这样可以产生泄露,因为期间不是周期的整数倍就会有泄露 signal = SinSignal(freq=440) duration = signal.period * 30.25 wave = signal.make_wave(duration) wave.plot() plt.show() # sin的波形 spectrum = wave.make_spectrum() spectrum.plot(high=880) decorate(xlabel='Frequency (Hz)') plt.show() #sin的频谱 # 用不同的窗口看看他们对泄露的影响,分别用了bartlett,blackman,hamming,hanning窗口进行对比 for window_func in [np.bartlett, np.blackman, np.hamming, np.hanning]: wave = signal.make_wave(duration) wave.ys *= window_func(len(wave.ys)) spectrum = wave.make_spectrum()
from thinkdsp import decorate from thinkdsp import Sinusoid from thinkdsp import normalize, unbias from thinkdsp import SinSignal from thinkdsp import SquareSignal import numpy as np import matplotlib.pyplot as plt square = SquareSignal(1500).make_wave(duration=0.5, framerate=10000) square.make_spectrum().plot() decorate(xlabel='Frequency (Hz)') square.make_audio() SinSignal(1100).make_wave(duration=0.5, framerate=10000).make_spectrum().plot() plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import read_wave from thinkdsp import play_wave import matplotlib.pyplot as plt seno = SinSignal(freq=329, amp=1, offset=0) segundo_seno = SinSignal(freq=659, amp=1, offset=0) tercer_seno = SinSignal(freq=165, amp=1, offset=0) seno2 = SinSignal(freq=391, amp=1, offset=0) segundo_seno2 = SinSignal(freq=783, amp=1, offset=0) tercer_seno2 = SinSignal(freq=196, amp=1, offset=0) seno3 = SinSignal(freq=493, amp=1, offset=0) segundo_seno3 = SinSignal(freq=987, amp=1, offset=0) tercer_seno3 = SinSignal(freq=246, amp=1, offset=0) wave_seno = seno.make_wave(duration=1.0, start=1, framerate=44100) wave_segundo_seno = segundo_seno.make_wave(duration=1.0, start=1, framerate=44100) wave_tercer_seno = tercer_seno.make_wave(duration=1.0, start=1, framerate=44100) wave_seno2 = seno2.make_wave(duration=1.0, start=0, framerate=44100) wave_segundo_seno2 = segundo_seno2.make_wave(duration=1.0,
from thinkdsp import Sinusoid from thinkdsp import normalize, unbias import numpy as np import matplotlib.pyplot as plt from thinkdsp import decorate from thinkdsp import SquareSignal from thinkdsp import TriangleSignal from thinkdsp import SinSignal square = SquareSignal(1500).make_wave(duration=0.5, framerate=10000) square.plot() plt.subplot() square.make_spectrum().plot() decorate(xlabel='Frequency (Hz)') square.make_audio() SinSignal(500).make_wave(duration=0.5, framerate=10000).make_audio() square.play("2-3.wav") plt.show()
import wave import thinkdsp import matplotlib.pyplot as plt import numpy as np from scipy import signal from thinkdsp import SinSignal, Spectrum, decorate from thinkdsp import Signal plt.rcParams['font.sans-serif']=['SimHei']#图表上可以显示中文 plt.rcParams['axes.unicode_minus']=False#图表上可以显示负号 signal=SinSignal(freq=440) duration=signal.period*30.25 wave=signal.make_wave(duration) for window_func in [np.bartlett,np.blackman,np.hanning,np.hamming]: wave=signal.make_wave(duration) wave.ys*=window_func(len(wave.ys)) Spectrum=wave.make_spectrum() Spectrum.plot(high=880,label=window_func) plt.title("频率") plt.show()
segment.segment(start=1.1, duration=0.005).plot() spectrum = segment.make_spectrum() spectrum.plot(high=7000) plt.show() spectrum.low_pass(4000) spectrum.plot(high=7000) plt.show() spectrum.high_pass(1000) spectrum.plot(high=7000) plt.show() spectrum.band_stop(2500, 1000) spectrum.plot(high=7000) plt.show() cos_sig = CosSignal(freq=440, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=2.0, offset=0) # # 正弦信号和波形 plt.subplot() cos_sig.plot() decorate(xlabel='Time (s)') wave1 = cos_sig.make_wave(duration=1) wave1.apodize() wave1.make_audio() spectrum1 = wave1.make_spectrum() plt.subplot() spectrum1.plot(high=2000) # # 余弦信号和波形 sin_sig.plot() decorate(xlabel='Time (s)')
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate #modulo para mostrar graficas import matplotlib.pyplot as plt #Crear senoidal signal seno = SinSignal(freq=400, amp=0.7, offset=0) cos = SinSignal(freq=800, amp=1.1, offset=0) #Crear grafica en memoria, asignamos propiedades seno.plot() decorate(xlabel='Tiempo (s)') decorate(ylabel='Amplitud') cos.plot() #muestra grafica plt.show()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot senalUno = SinSignal(freq=380, amp=0.1, offset=0) senalDos = SinSignal(freq=200, amp=1, offset=0) mezcla = senalUno + senalDos waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100) waveMezcla.plot() decorate(xlabel="Tiempo (s)") thinkplot.show() espectro = waveMezcla.make_spectrum() espectro.plot() decorate(xlabel="Frecuencia (Hz)") thinkplot.show()
from thinkdsp import CosSignal, SinSignal from thinkdsp import decorate cos_sig = CosSignal(freq=220, amp=1.0, offset=0) sin_sig = SinSignal(freq=880, amp=0.5, offset=0) oadd = SinSignal(freq=500, amp=0.7, offset=0) # mix = sin_sig + cos_sig mix = sin_sig + cos_sig + oadd # mix.plot() # decorate(xlabel='Time (s)') wave = mix.make_wave(duration=2, start=0, framerate=11025) wave.play('temp.wav') spectrum = wave.make_spectrum() spectrum.plot() decorate(xlabel='Frequency (Hz)')
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import SquareSignal from thinkdsp import decorate import thinkplot import numpy senalRectangular = SquareSignal(freq=2, amp=1.0, offset=numpy.pi) waveRectangular = senalRectangular.make_wave(duration=1, start=0, framerate=44100) senalSenoidal = SinSignal(freq=2, amp=1, offset=0) harmonico1 = SinSignal(freq=senalSenoidal.freq * 3, amp=0.3, offset=0) harmonico2 = SinSignal(freq=senalSenoidal.freq * 5, amp=0.25, offset=0) harmonico3 = SinSignal(freq=senalSenoidal.freq * 7, amp=0.20, offset=0) harmonico4 = SinSignal(freq=senalSenoidal.freq * 9, amp=0.15, offset=0) harmonico5 = SinSignal(freq=senalSenoidal.freq * 11, amp=0.1, offset=0) harmonico6 = SinSignal(freq=senalSenoidal.freq * 13, amp=0.05, offset=0) waveSenoidal = senalSenoidal.make_wave(duration=1, start=0, framerate=44100) mezcla = senalSenoidal + harmonico1 + harmonico2 + harmonico3 + harmonico4 + harmonico5 + harmonico6 waveMezcla = mezcla.make_wave(duration=1, start=0, framerate=44100) waveRectangular.plot() waveMezcla.plot() thinkplot.show() espectroRectangular = waveRectangular.make_spectrum() espectroMezcla = waveMezcla.make_spectrum()
import numpy as np import matplotlib.pyplot as plt from thinkdsp import decorate from thinkdsp import SinSignal signal = SinSignal(freq=440) duration = signal.period * 30.25 wave = signal.make_wave(duration) spectrum = wave.make_spectrum() plt.subplot(121) spectrum.plot(high=880) decorate(xlabel='Frequency (Hz)') for window_func in [np.bartlett, np.blackman, np.hamming, np.hanning]: wave = signal.make_wave(duration) wave.ys *= window_func(len(wave.ys)) spectrum = wave.make_spectrum() plt.subplot(122) spectrum.plot(high=880, label=window_func.__name__) decorate(xlabel='Frequency (Hz)') plt.show()
#import sys #sys.path.insert(1,'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import CosSignal from thinkdsp import decorate #modulo para mostrar las graficas import matplotlib.pyplot as plt #crear señal senoidal seno = SinSignal(freq=200, amp=0.7, offset=0) coseno = CosSignal(freq=800, amp=1.1, offset=0) #creamos grafica y asignamos propiedades seno.plot() coseno.plot() decorate(xlabel='Tiempo (s)') decorate(ylabel='Amplitud') plt.show()
spectrum = segment.make_spectrum() spectrum.plot(high=5000, color='0.7') spectrum.low_pass(cutoff) spectrum.plot(high=5000, color='#045a8d') decorate(xlabel='Frequency (Hz)') audio = spectrum.make_wave().make_audio() display(audio) ################################################ from thinkdsp import SinSignal signal = (SinSignal(freq=400, amp=1.0) + SinSignal(freq=600, amp=0.5) + SinSignal(freq=800, amp=0.25)) signal.plot() wave2 = signal.make_wave(duration=1) wave2.apodize() wave2.make_audio() spectrum = wave2.make_spectrum() spectrum.plot(high=2000) signal += SinSignal(freq=450) signal.make_wave().make_audio()
import sys sys.path.insert(1, "dsp-modulo") from thinkdsp import SinSignal from thinkdsp import decorate from thinkdsp import read_wave from thinkdsp import play_wave import matplotlib.pyplot as plt seno = SinSignal(freq=440, amp=1.0, offset=0) segundo_seno = SinSignal(freq=340, amp=1, offset=0) tercer_seno = SinSignal(freq=600, amp=0.7, offset=0) wave_seno = seno.make_wave(duration=1.0, start=1, framerate=44100) wave_segundo_seno = segundo_seno.make_wave(duration=1.0, start=2, framerate=44100) wave_tercer_seno = tercer_seno.make_wave(duration=1.0, start=3, framerate=44100) resultante = wave_seno + wave_segundo_seno + wave_tercer_seno decorate(xLabel="Tiempo (s)") decorate(yLabel="Amplitud") resultante.plot()
if not os.path.exists('thinkdsp.py'): get_ipython().system( 'wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py' ) # ## Signals # # Instantiate cosine and sine signals. # In[33]: from thinkdsp import CosSignal, SinSignal cos_sig = CosSignal(freq=450, amp=1.0, offset=0) sin_sig = SinSignal(freq=900, amp=0.5, offset=0) # Plot the sine and cosine signals. By default, `plot` plots three periods. # In[34]: from thinkdsp import decorate cos_sig.plot() decorate(xlabel='Time (s)') # Here's the sine signal. # In[35]: sin_sig.plot()
import sys sys.path.insert(1, 'dsp-modulo') from thinkdsp import SinSignal from thinkdsp import decorate import thinkplot frecuencia1 = SinSignal(freq=1500, amp=0.3, offset=0) frecuencia2 = SinSignal(freq=380, amp=0.6, offset=0) frecuencia3 = SinSignal(freq=5300, amp=1.0, offset=0) frecuencia4 = SinSignal(freq=12300, amp=0.1, offset=0) resultante1 = frecuencia1 + frecuencia2 resultante2 = frecuencia3 + frecuencia4 waveResultante1 = resultante1.make_wave(duration=1,start=0,framerate=44100) waveResultante2 = resultante2.make_wave(duration=6,start=1.3,framerate=44100) waveFinal = waveResultante1 + waveResultante2 waveFinal.plot() decorate(xLabel="Tiempo (s)") thinkplot.show() espectro = waveFinal.make_spectrum() espectro.plot() decorate(xLabel="Frecuencia (Hz)") thinkplot.show()
import os from matplotlib.pyplot import subplot from thinkdsp import SquareSignal from thinkdsp import decorate from thinkdsp import plt from thinkdsp import Sinusoid from thinkdsp import normalize, unbias import numpy as np from thinkdsp import SinSignal from thinkdsp import read_wave square = SquareSignal(1100).make_wave(duration=0.5, framerate=10000) square.make_spectrum().plot() segment = SinSignal(10000).make_wave(duration=0.5, framerate=10000).make_audio() segment.write(filename='fb.wav') # decorate(xlabel='Frequency (Hz)') # plt.show()