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)
Example #2
0
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'])
Example #3
0
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
Example #4
0
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')
Example #5
0
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()

Example #6
0
File: 2-4.py Project: wht-s/456
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()
Example #8
0
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
Example #9
0
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()
Example #10
0
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)
Example #11
0
#!/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')
Example #12
0
File: 2-2.py Project: wht-s/456
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()
Example #13
0
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]:
Example #15
0
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)