编程语言
首页 > 编程语言> > 如何使用Python生成正弦波?

如何使用Python生成正弦波?

作者:互联网

我正在尝试在给定的持续时间内生成给定频率的正弦波,然后将其写入.wav文件.我正在使用numpy的sin函数和scipy的wavfile函数.我听到的声音听起来绝对不是正弦波.

import numpy as np
from scipy.io import wavfile

fs = 44100

f = int(raw_input("Enter fundamental frequency: "))
t = float(raw_input("Enter duration of signal (in seconds): "))

samples = np.arange(t * fs)

signal = np.sin(2 * np.pi * f * samples)

signal *= 32767

signal = np.int16(signal)

wavfile.write(str(raw_input("Name your audio: ")), fs, signal)

任何帮助,将不胜感激.我是否对正弦波或某些东西做出了一些根本上不正确的假设?

解决方法:

更改

samples = np.arange(t * fs)

samples = np.linspace(0, t, int(fs*t), endpoint=False)

(这假定fs * t为整数值.)

或者,正如保罗·潘泽(Paul Panzer)在评论中建议的那样,

samples = np.arange(t * fs) / fs

您的样本只是整数0、1、2,… fs * t的序列.相反,您需要样本的实际时间值(以秒为单位).

标签:scipy,trigonometry,waveform,python,numpy
来源: https://codeday.me/bug/20191110/2013964.html