输出音频文件所需函数为 audiowrite 。通过例程进行解释:

% 生成时间序列
fs = 5000; % [Hz] 信号采样频率
T = 1; % [s] 信号长度
x = 0:1/fs:T; % [s] 时间序列 % 生成信号序列
f = 440; % [Hz] 信号频率
y = 1*sin(2*pi*f*x); % 输出音频文件
fname = 'Asin1.wav'; % 设定文件名称 注意格式
audiowrite(fname,y,fs); % 输出文件 % 音频文件测试
clear y Fs % 初始化工作区
[y,Fs] = audioread(fname); % 读取音频文件
sound(y,Fs); % 收听音频

这里,我们设定第八行的幅度为1,也就是说信号的最高幅值为1。当然,也可以尝试其他的数比如 0.5、0.7、1、2、5、10,都可以试着听一下。不难发现,幅值小于1时,得到的是单频正弦信号;但当幅值大于1时,会出现其他频率的声音。这并不是因为扬声器失真,个人猜测可能是因为 Matlab 对幅度的截止造成的。一些博客里给出的幅度调整方案感觉并不适用于 2015 版本的 Matlab。

利用 if else 语句对之前的信号进行幅度剪裁,只保留 [-1,1] 区间内的值,绘图如下:

下面通过听音实验验证上述猜想:

% 生成时间序列
fs = 12000; % [Hz] 信号采样频率
T = 1; % [s] 信号长度
x = 0:1/fs:T; % [s] 时间序列 % 生成信号序列
f = 440; % [Hz] 信号频率
A = [0.5 0.7 1 2 5 10]; % 设了6个信号幅度
y1 = zeros(6,length(x)); % 未截断信号初始化
for n = 1:6
y1(n,:) = A(n)*sin(2*pi*f*x); % 未截断信号赋值
end
y2 = y1; % 截断信号初始化
for n = 1:6
for m = 1:length(x) % 截断信号赋值
if y1(n,m)>1
y2(n,m) = 1;
else if y1(n,m)<-1
y2(n,m) = -1;
end
end
end
end % 测试控制
k = 5; % 选择第k组进行听音比较,k取1至6
y = [y1(k,:),y2(k,:)]; % 生成目标信号 % 输出音频文件
fname = 'Asin2.wav'; % 设定文件名称 注意格式
audiowrite(fname,y,fs); % 输出文件 % 音频文件测试
clear y Fs % 初始化工作区
[y,Fs] = audioread(fname); % 读取音频文件
sound(y,Fs); % 收听音频

以上是关于 audiowrite 函数的讨论。最后列出一些相关博文,以及其他有趣的博文:

  来源: CSDN博客  作者:消防菊的博客(关于纯音、和弦)

   来源:Matlab(也可参原文档 help 或 doc)

   来源:网易博客  作者:个个


END

最新文章

  1. 让 Ubuntu 桌面自动更换壁纸
  2. 存储过程 保存 xml 数据
  3. Node.js入门:Hello World
  4. [KOJ0574NOIP200406合并果子]
  5. PowerShell 解锁使用浏览器下载的文件
  6. GCD 续集
  7. BZOJ 1266: [AHOI2006]上学路线route(最短路+最小割)
  8. Linux第九讲随笔 -进程管理 、ps aux 、
  9. uboot引导linux内核过程详解【转】
  10. shell编程--流程控制for,do-while,if-then,break,continue,case等
  11. SQL的操作方法
  12. 搞懂Redis到底快在哪里
  13. JAVA之Mybatis基础入门--框架搭建与简单查询
  14. Docker for .Net Developers(part1:Docker基本概念介绍)
  15. 解决Android Studio出现Failed to open zip file. Gradle&#39;s dependency cache may be corrupt的问题
  16. git合并指定文件到另一分支
  17. 性能测试二十三:环境部署之Redis安装和配置
  18. Shiro笔记(五)JSP标签
  19. oracle 常用字符串函数
  20. Codeforces Round #504 E. Down or Right

热门文章

  1. Python 堡垒机介绍
  2. eclipse软件仿真操作
  3. 单元测试系列之七:Sonar 数据库表关系整理一(rule相关)
  4. centos 7 已经开启 22 端口但无法连接
  5. Pandas 基础(6) - 用 replace() 函数处理不合理数据
  6. 虹软SDK在nodejs中的集成
  7. 雷林鹏分享:jQuery EasyUI 数据网格 - 扩展编辑器
  8. linux存储管理之文件系统
  9. 使用pandas的部分问题汇总
  10. 前端页面调用Spring boot接口发生的跨域问题