def triangle_example(freq): """Makes a figure showing a triangle wave. freq: frequency in Hz """ framerate = 10000 signal = thinkdsp.TriangleSignal(freq) duration = signal.period * 3 segment = signal.make_wave(duration, framerate=framerate) segment.plot() thinkplot.save(root='triangle-%d-1' % freq, xlabel='Time (s)', axis=[0, duration, -1.05, 1.05]) wave = signal.make_wave(duration=0.5, framerate=framerate) spectrum = wave.make_spectrum() thinkplot.preplot(cols=2) spectrum.plot() thinkplot.config(xlabel='Frequency (Hz)', ylabel='Amplitude') thinkplot.subplot(2) spectrum.plot() thinkplot.config(ylim=[0, 500], xlabel='Frequency (Hz)') thinkplot.save(root='triangle-%d-2' % freq)
def dct_plot(): signal = thinkdsp.TriangleSignal(freq=400) wave = signal.make_wave(duration=1.0, framerate=10000) dct = wave.make_dct() dct.plot() thinkplot.config(xlabel='Frequency (Hz)', ylabel='DCT') thinkplot.save(root='dct1', formats=['pdf', 'eps'])
def waveform(freq, btn_input): if btn_input == 1: signal = thinkdsp.SinSignal(freq) if btn_input == 2: signal = thinkdsp.SquareSignal(freq) if btn_input == 3: signal = thinkdsp.TriangleSignal(freq) wave = signal.make_wave(framerate=samplingFreq) return wave
def triangle_example(freq): framerate = 10000 signal = thinkdsp.TriangleSignal(freq) duration = signal.period*3 segment = signal.make_wave(duration, framerate=framerate) segment.plot() thinkplot.save(root='triangle-%d-1' % freq, xlabel='time (s)', axis=[0, duration, -1.05, 1.05]) wave = signal.make_wave(duration=0.5, framerate=framerate) spectrum = wave.make_spectrum() spectrum.plot() thinkplot.save(root='triangle-%d-2' % freq, xlabel='frequency (Hz)', ylabel='amplitude')
import thinkdsp import matplotlib.pyplot as plt signal_tri = thinkdsp.TriangleSignal(200) #产生一个200Hz的三角波 plt.subplot(211) signal_tri.plot() wave = signal_tri.make_wave(duration=0.5, framerate=10000) spectrum = wave.make_spectrum() plt.subplot(212) spectrum.plot() plt.show()
from thinkdsp import Sinusoid from thinkdsp import normalize,unbias from thinkdsp import SquareSignal from thinkdsp import TriangleSignal from thinkdsp import decorate import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False #三角波 class TriangleSignal(Sinusoid): def evaluate(self,ts): cycles = self.freq*ts+ self.offset/PI2 frac,_=np.modf(cycles) ys=np.abs(frac-0.5) ys=normalize(unbias(ys),self.amp) return ys signal1= thinkdsp.TriangleSignal(440).make_wave(duration = 0.01) signal1.plot() spectrum = signal1.make_spectrum() print(spectrum.hs[0]) spectrum.hs[0]=100 spectrum.make_wave().plot(color='green') plt.show()
# plt.show() 2 - 5 def filter_spectrum(spectrum): """Divides the spectrum through by the fs. spectrum: Spectrum object """ # avoid division by 0 spectrum.hs[1:] /= spectrum.fs[1:] spectrum.hs[0] = 0 wave = thinkdsp.TriangleSignal(freq=440).make_wave(duration=0.5) wave.make_audio() wave.plot() plt.show() spectrum = wave.make_spectrum() spectrum.plot() plt.show() spectrum.plot(high=10000, color='red') filter_spectrum(spectrum) spectrum.scale(440) spectrum.plot(high=10000, color='blue') decorate(xlabel='Frequency (Hz)') plt.show() filtered = spectrum.make_wave()
def get_triangle_wave(freq, offset, duration=0.1, framerate=40000): signal = thinkdsp.TriangleSignal(freq=freq, amp=1.0, offset=offset) wave = signal.make_wave(duration=duration, start=0, framerate=framerate) return wave.ys
import thinkdsp import matplotlib.pyplot as plt import numpy as np from scipy import signal from thinkdsp import TriangleSignal from thinkdsp import decorate plt.rcParams['font.sans-serif'] = ['SimHei'] #图表上可以显示中文 plt.rcParams['axes.unicode_minus'] = False #图表上可以显示负号 signal = thinkdsp.TriangleSignal(440) wave = signal.make_wave(duration=0.5, framerate=10000) #period=signal.period segment = wave.segment(start=0, duration=0.01) plt.subplot(1, 2, 1) plt.title('440HZ三角波') segment.plot() spectrum = wave.make_spectrum() plt.subplot(1, 2, 2) plt.title('频谱') spectrum.plot() print(spectrum.hs[0]) plt.show()
import thinkdsp import matplotlib.pyplot as plt import numpy as np from scipy import signal plt.rcParams['font.sans-serif'] = ['SimHei'] #图表上可以显示中文 plt.rcParams['axes.unicode_minus'] = False #图表上可以显示负号 signal = thinkdsp.TriangleSignal(200) #200HZ的三角波 wave = signal.make_wave(duration=0.5, framerate=10000) #长度0.5,每秒10000次 period = signal.period segment = wave.segment(start=0, duration=period * 3) plt.subplot(2, 2, 1) plt.title('200HZ三角波') segment.plot() spectrum = wave.make_spectrum() plt.subplot(2, 2, 2) plt.title('三角波频谱') spectrum.plot() #锯齿波 signal1 = thinkdsp.SawtoothSignal(200) wave = signal1.make_wave(duration=0.5, framerate=10000) period = signal1.period segment = wave.segment(start=0, duration=period * 3) plt.subplot(2, 2, 3) plt.title('200HZ锯齿波') segment.plot() spectrum = wave.make_spectrum() plt.subplot(2, 2, 4)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Aug 2 17:38:29 2018 @author: MikeNagler """ import thinkdsp from thinkdsp import Signal, Wave, Spectrum tri_sig = thinkdsp.TriangleSignal(freq=440) tri_wave = tri_sig.make_wave(duration=0.01, start=1, framerate=11025) tri_wave.plot() tri_spec = tri_wave.make_spectrum() tri_spec.plot() print(tri_spec.hs[0]) tri_wave.write('temp.wav') thinkdsp.play_wave('temp.wav', 'afplay') tri_spec.hs[0] = 100 tri_spec.plot() tri_wave2 = tri_spec.make_wave() tri_wave2.plot() tri_wave2.write(filename='temp2.wav') thinkdsp.play_wave('temp2.wav', 'afplay')
plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False signal1 = thinkdsp.SawtoothSignal(200) plt.subplot(3, 2, 1) plt.ylabel('200Hz锯齿波') plt.title('波形') signal1.plot() sawtooth = SawtoothSignal().make_wave(duration=0.5, framerate=10000) plt.subplot(3, 2, 2) plt.title('频谱') sawtooth.make_spectrum().plot() signal2 = thinkdsp.TriangleSignal(200) plt.subplot(3, 2, 3) plt.ylabel('200Hz三角波') signal2.plot() wave2 = signal2.make_wave(duration=0.5, framerate=10000) spectrum = wave2.make_spectrum() plt.subplot(3, 2, 4) spectrum.plot() signal3 = thinkdsp.SquareSignal(200) plt.subplot(3, 2, 5) plt.ylabel('200Hz方波') signal3.plot()
import thinkdsp import matplotlib.pyplot as plt from winsound import PlaySound import numpy as np signal_tri = thinkdsp.TriangleSignal(440) plt.subplot(411) signal_tri.plot() wave = signal_tri.make_wave(duration=0.01, framerate=10000) spectrum = wave.make_spectrum() plt.subplot(412) spectrum.plot() print(spectrum.hs[0]) print(np.angle(spectrum.hs[0])) print(np.abs(spectrum.hs[0])) spectrum.hs[0] = 100 print(spectrum.hs[0]) print(type(spectrum.hs[0])) wave = spectrum.make_wave() plt.subplot(413) wave.plot() spectrum = wave.make_spectrum() plt.subplot(414) spectrum.plot() plt.show()
def inverse_dct_iv(amps): return dct_iv(amps) * 2 # In[20]: amps = [0.6, 0.25, 0.1, 0.05] ys = inverse_dct_iv(amps) amps2 = dct_iv(ys) print(max(abs(amps - amps2))) # In[21]: signal = thinkdsp.TriangleSignal(freq=400) wave = signal.make_wave(duration=1.0, framerate=10000) wave.make_audio() # In[22]: dct = wave.make_dct() dct.plot() thinkplot.config(xlabel='Frequency (Hz)', ylabel='DCT') # In[23]: wave2 = dct.make_wave() # In[25]:
def af(spectrum): number = np.size(spectrum.hs) # print(number) for i in range(number): if i == 0: spectrum.hs[0] = 0 else: # print(spectrum.hs[i]) spectrum.hs[i] = spectrum.hs[i] / spectrum.fs[i] # print(spectrum.fs[i]) # print(spectrum.hs[i]) return spectrum signal_tri = thinkdsp.TriangleSignal(200) #生成一个200Hz的方波 plt.subplot(331) signal_tri.plot() wave = signal_tri.make_wave(duration=0.01, framerate=10000) spectrum = wave.make_spectrum() plt.subplot(334) spectrum.plot() s = af(spectrum) plt.subplot(337) s.plot() signal_squ = thinkdsp.SquareSignal(200) #生成一个200Hz的三角波 plt.subplot(332) signal_squ.plot() wave = signal_squ.make_wave(duration=0.01, framerate=10000) spectrum = wave.make_spectrum() plt.subplot(335)