怎样用python生成sin wave的wave文件

作者&投稿:超朗 (若有异议请与网页底部的电邮联系)
怎样用python生成sin wave的wave文件~

基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;
使用 Rails Migration 随着功能的开发逐步创建表;
随着细节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型;
第一个 Release 的时候清理 Migrations 合并成一个;
随着后期的改动,逐步增加、修改、删除字段或表。
基本上我的所有项目都是这么搞的,这和项目是否复杂无关。
所以我前面为什么说思路需要转变。

在python自带编辑器IDLE中,新建脚本如作图.py
导入需要的模块
import numpy as np
import scipy as sp
import pylab as pl
2
输入代码
x=np.linspace(0,4*np.pi,100)
pl.plot(x,pl.sin(x))
pl.show()
3
执行代码,按F5,可直接显示图片
4
几点说明:
1. 方法linspace(0,4*np.pi,100)表示从0开始,到4*pi结束,生成100个点
2. 方法plot为画图函数,相当于plot(x,y),x为横坐标,y为纵坐标
3.show()为展示出来
希望采纳!!

以下代码涵盖了基本的写wave文件需要的函数。
# Simple wave file creation in python using the "wave" module.
# Author; Eric Nichols
# 1-11-11
#
# code adapted from:

import wave     #需要导入python的wave module,函数用法参http://docs.python.org/library/wave.html
import struct     #struct module的用法参见http://docs.python.org/library/struct.html
from 
math import sin, pi, pow       

MAX_AMPLITUDE = 32767   #决定sin wave的音量
SAMPLE_RATE = 44100  #采样频率,由于人听觉在20到20千赫兹,由于Nyquist定律,一般44100(大于20千
                      的两倍)的频率足够满足人耳,再高就浪费文件空间啦,这也是CD通常的采样频率。
DURATION_SEC = 
3       #生成wav的时间为三秒
SAMPLE_LEN = 
SAMPLE_RATE * DURATION_SEC      # 
乘一下就是要写多少个SAMPLE啦
filename = '/Users/rongjin/Desktop/output.wav'    #起个文件名哈,文件生成后就到这个文件夹找啦
print "Creating sound file:", filename
print "Sample rate:", 
SAMPLE_RATE
print "Duration (sec):", DURATION_SEC
print "# samples:", 
SAMPLE_LEN
wavefile = wave.open(filename, 'w')  # 
'w'写文件,其他还有'r','rb','wb'啥的,详情google之
wavefile.setparams((2, 2, SAMPLE_RATE, 0, 'NONE', 'not 
compressed'))  # 设置下wave file的头文件
samples = []   #建一个tuple用来放好几个channel的
for i in range(SAMPLE_LEN):
   t = float(i) / 
SAMPLE_RATE  # t表示当下滴时间
   sample = MAX_AMPLITUDE * sin(t * 256 * 2 * pi)  # 
就根据sin wave的方程得到当下的amplitude啦,
                                                      这里生成频率为256的音高哟,可以随便改。
   #print i, t, sample    # show 
some generated values. comment out for speed.
   packed_sample = struct.pack('h', sample)  # 
转换成16进制的string
   samples.append(packed_sample)  # 
append到samples,作为channel 1
   samples.append(packed_sample)  # append一个一样的作为channel 
2,要是append另一个频率的
                                    packed_sample_2,就可以有和声效果啦
sample_str = ''.join(samples)   # 
把samples里所有的值都convert到一个string上
wavefile.writeframes(sample_str)       # 终于要写waveframe啦!
wavefile.close()   #最后别忘了关掉文件,不然会出错滴
print "Done writing 
file."         #大告成功!


如何用python画同心圆并内接一个五角星?
答:import numpy as np import matplotlib.pyplot as plt matplotlib inline theta = np.linspace(0, 2* np.pi, 100)r, R = 9, 10 # 小圆和大圆的半径 outter circle X = R * np.cos(theta)Y = R * np.sin(theta)innner circle x = r * np.cos(theta)y = r * np.sin(theta)pen...

python np.cos sin怎么计算
答:在python中,有一个math module,你可以import math,里面有math.sin(),math.cos(),math.asin()和math.acos()四个函数.有了这四个函数你就可以求函数值和角度了.注意:括号里面填的数值,要用弧度制.再看看别人怎么说的。

正余弦值的计算方法有什么?
答:使用计算器或计算机软件:现代计算器和计算机软件通常内置了正余弦函数的计算功能。只需输入角度值,就可以直接得到正余弦值。例如,在Python中,可以使用math库的sin()和cos()函数来计算正余弦值:import math angle = 30 sin_value = math.sin(math.radians(angle))cos_value = math.cos(math....

Python或Matlab画出sin[(x^2+y^2)^1/2]的图像
答:Python代码 import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()ax = Axes3D(fig)X = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = np.sin(R)...

用Python做出y=sin(x+1)和y=cos+1在区间[0,2π]上的图像?
答:你可以用python的matplotlib库来绘制y=sin(x+1)和y=cos+1在区间[0,2π]上的图像。123 你需要导入numpy和matplotlib.pyplot模块,然后用numpy.linspace函数生成x的值,再用numpy.sin和numpy.cos函数计算y的值,最后用matplotlib.pyplot.plot函数绘制曲线,并设置图例、标题、坐标轴等。下面是一个可能的...

Python编写程序,利用泰勒级数 ,计算sin x的值.要求最后一项的绝对值小...
答:i是指数, sign是符号, n是分子即x的i次方,d是分母即阶乘,sum_是求和, p是精度. 上面的初始化是第一项. while里面从第二项开始累加. sin(30度)为0.5.

编写python 脚本?
答:import math l, t = map(int, input("Please enter length and time:").split())while not (0<=t<=60):t = int(input("Please enter a time between 0 and 60:"))while l <= 0:l = int(input("Please enter a valid length which is more than zero:"))x = l * math.sin...

PYTHON,怎么求符号变量在某具体点的值,英语说应该就是substitution吧?举...
答:默认的Python内建的math模块中的方法 sin(x),其中x表示弧度,并不是直接的角度。所以如果想直接使用角度的话,需要通过math的radians方法转换一下,如下:求90度的正弦值 import mathprint math.sin(math.radians(90))

求助python绘制三维曲线
答:直接用matplotlib模块相对来说非常简单。from mpl_toolkits.mplot3d import Axes3Dimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.gca(projection='3d')x = np.linspace(0, 1, 100)y = np.sin(x * 2 * np.pi) / 2 + 0.5ax.plot(x, y, zs=0, ...

python3.0中import havsin应该怎么写
答:不是importmath 而是: import math,中间是有空格的。这是让python导入数学模块,使python支持一系列数学函数和常量。比如math.pi 就是常数 π (3.14159...)比如math.acos(x) 就是反余弦函数!