多语言展示
当前在线:180今日阅读:126今日分享:42

Mathematica的应用——处理声音

Mathematica不仅能够绘制出精美的图像、导出动态图、导出视频,还可以处理声音,把函数变成声音。        听说科学家已经用Mathematica模拟出宇宙大爆炸的声音了,真是难以想象啊。可惜,我不知道相关代码。        下面就简单地讲一下,Mathematica是怎么处理声音的!
工具/原料
1

电脑

2

Mathematica(8.0以上版本)

代码和示例
1

声音的本质是波,我们可以用Mathematica把波函数转化成声音,用到的函数命令是Play、ListPlay。        我们的耳朵可以听到的声音频率在20~20000赫兹之间,因此,波函数的频率也应如此。Play[Sin[5000 t], {t, 0, 10}]        运行之后,就是一段持续10秒钟的频率为声音。在笔记本里有一个声音播放器,点那个三角形,就能够听到函数的声音了;点击那个矩形,可以停止声音的播放。        注意,5000这个数值不要改太少,否则会产生次声波。

2

不同的函数给出不同的波形,运行的结果就会表现为不同的音色;而且,用加、减、乘、除,可以把两个简单的声音组合起来。举三个例子:Play[Sin[700 t] + 25 t Sin[350 t^2], {t, 0, 8}]Play[Sin[100 t^2 Sin[20 t]], {t, 3, 10}]Play[Sin[100 t Sin[2 t]], {t, 3, 30}]

3

用Round函数或者Mod函数,可以很好地制造噪音。Play[Sin[5000 t] + Mod[5000 t, 50], {t, 0, 2}]        这个所以里面,正弦函数的声音完全被模函数给盖住了,因为模函数的振幅远大于前者。于是,只要把正弦函数的振幅调大(乘以60),就够了:Play[60*Sin[5000 t] + Mod[5000 t, 50], {t, 0, 2}]

5

播放不同乐器(大提琴、钢琴、 大号)的音符的随机序列,每个音符播放的时间长度也是随机的:Sound[SoundNote[#, 1, RandomChoice[{'Piano', 'Cello', 'Tuba'}]] & /@ RandomInteger[12, 30], 4]        这段代码,每次运行,都有可能产生不同的结果。

6

Beep函数,可以发出提示音。        下面的代码,在Mathematica进行每一次计算之前,都有一次提示音:Table[Beep[]; FactorInteger[2^(50 i) - 1], {i, 10}]        不过,这个提示音实在是小点,“叮、叮、叮……”,一定要很仔细的听才行。

7

Mathematica可以识别flac格式的音频文件,这里导入一个Mathematica官方的演示文件“ExampleData/sample.flac”,在点击“开始”按钮后,不仅能听到声音,还能看到声音的波动:data = Import['ExampleData/sample.flac']ByteCount[data]/1024.^2

8

Mathematica10.0以前的版本是不支持MP3格式的,所以,低版本的Mathematica是不能导入MP3文件的。好在,10.0版本以后,Mathematica可以处理MP3格式了:Import['ExampleData/car.mp3']

9

把函数的声音导出为MP3格式的文件,并且放到电脑桌面上。        两个函数为例:sy = Play[Sin[100 t Sin[2 t]], {t, 3, 30}, SampleRate -> 44100]shengyin = Play[(2 + Cos[50 t])*Sin[2000*(1 + Round[2 t])*t], {t, 0, 20}]Export['C:\\Users\\Administrator\\Desktop\\声音.mp3', sy]Export['C:\\Users\\Administrator\\Desktop\\声音0.mp3', shengyin]        然后,你就可以在电脑上听“歌”了。

注意事项
1

Mathematica高版本,越来越好玩了。

2

Mathematica的Speak,居然听不到它发声,不知道咋回事!

推荐信息