matlab中的方波信号图片_【Matlab】Sound

本文介绍了Matlab中的声音处理功能,包括播放系统自带音频、使用audioplayer和audiorecorder对象、音频文件的读写、线性到μ-law编码转换。此外,还探讨了如何使用Matlab进行简单的音乐合成,如创建音阶和调整音高,以及处理失真问题。最后,文章提供了一些资源和示例代码,帮助读者进一步学习Matlab的音频处理和音乐创作。
摘要由CSDN通过智能技术生成

结束了朝七晚十二的生活后,最近几天好好放纵了一下,把库存里的还没玩的游戏都玩完或者玩到卡关,把想再看一遍的书又看了一遍,奢侈地睡了个觉。但是看了看开学时间不断地逼近,计划却只完成了那么几个,心里着实不甘。于是又来敲键盘了。

Tzvi讲过,我们Matlab只学一个学期的基础,后面因为不同人的发展方向不同,所以只能靠学习基础的方式自行学习你需要用到的内容。所以今天要摸的是Matlab里有关于sound的内容(Matlab的功能真的很杂,它甚至还有FM Broadcast Receiver)

《Mastering MATLAB》里关于SOUND的介绍非常少,只有短短两页内容,可见在Matlab里,sound并不是什么主要内容或者说是弱项。sound在matlab里更多的并不是用于制作音乐,而是提醒和分析声音背后的数学,物理规律

为什么说是提醒呢,因为有些比较复杂的程序,往往需要matlab运算很久才会有结果,这时候人一般是不会盯着屏幕等着出结果,而是走开先去干其他事。这时候就需要matlab在运算完后发出提示,最好是声音。所以sound在matlab里更多是用于提醒程序已运行完,结果已得出(一般用beep函数)。不过也有人用warndlg(弹出窗口)来提醒

在《Mastering MATLAB》里这部分内容,似乎把函数分成了high-level functions (audioplayer, audiorecorder, getaudiodata, audiodevinfo...) 和 lower-level functions (sound, soundsc, auread, wavread, auwrite, lin2mu...)。但我觉得分高低级并没有什么用

还是从头开始尝试,就从怎么播放系统自带的音频开始吧

其实matlab自带了很多声音,除了我们刚刚在上面提到的我们用matlab经常能听到的beep之外,还有chirp(叽叽喳喳的鸟叫声), gong(铜鼓), handel(哈雷路亚), laughter, splat(东西掉下来的啪嗒声), train。这些东西都是mat文件,位置在

"MATLAB/R2018b/toolbox/matlab/audiovideo"

f1941b9aeb9449b50178df65942371f5.png

我们可以通过以下函数来播放

load chirp; %读取chirp.mat文件

sound(y,Fs); %播放以y为样本,Fs为频率的声音

还可以这么写

load train;

player = audioplayer(y,Fs); %创建用于播放音频的对象

play(player);

load我们应该都能看懂,就是读取文件,而mat文件就是matlab自带的数据包文件格式。sound(y,fs)就是播放以y为样本,fs为采样频率的声音;与之相对的是play,它可以从 audioplayer 对象播放音频。audioplayer就是创建用于播放音频的对象

c8ac08bdf7e3ca13430cd9d13dee3cc3.png

audioplayer对象长这样

其中fs采样频率以Hz为单位,指的是采所有的样本,但是一秒内采fs个样本。必须有震动,即变化,或者说是波才能形成声音,所以当样本全为同一个值的时候,不管这个值有多大,它都是没有声音的,只有在值出现变化的时候,才会有声音

嗯嗯,你们动手试试吧,这些声音都挺有趣的

然后我们看回我刚刚放的第一张图,里面箭头的是系统自带的包含音频信息的mat文件,方形的是敲琴视频,还有圆圈圈出来的是matlab的一个彩蛋。比较神奇的是,唯独这个mat文件的频率Fs(7418)和其他mat的频率(8192)不一样,而且其他的样本数据名字都是y,唯独它是叫mtlb。有兴趣的朋友可以自己去试试这个彩蛋

我们现在看到的都是已经从音频文件转为mat的文件了,那如果我们自己要转换怎么做呢?这时候就需要audioread函数了

首先要把你要转换的音频文件放在当前目录里,当前目录你可以用pwd函数,看看是在哪里,或者直接看上面

5b230ae3b4c173cd50bd80282e09316e.png

比如我把一个叫night.mp3的文件,放在当前目录,然后就可以使用函数了

[y,fs] = audioread('night.mp3'); %读取音频文件,并输出到工作区的"y","fs"

sound(y,fs);

这时候我们发现,工作区出现了"fs","y"这两个数据,同时电脑还缓缓播放出好听的音乐。这里的"fs"就是这个音频的频率,"y"就是音频数据,而且"y"还是一个nx2的double,为什么是2呢,因为现在大多数音频文件都是双声道了啊。再补充一点,还有一个函数叫做soundsc,它可以缩放音频信号 y 的值以使其位于 –1.0 到 1.0 范围内,尽可能提高音频的音量,而不用裁剪

1f64fd11330952dd6cea28424f281f98.png

然后我们就可以点右上角的小三角形,对工作区进行保存

831d3232854f546161378d41b956f270.png

现在我们可以把原来的mp3文件和新的mat文件进行对比,就可以发现,这么做是非常的不划算的,文件大小一下子大了21倍。毕竟mat不是专门用来储存音频信息的,情有可原

a45b0f5a08c52990e70f9e79caf760ad.png

没什么卵用不要紧,主要是这样可以装逼,不是吗。找个好友,发给已经转化过音频的mat文件给ta。"你下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值