罗兰在MATLAB的艺术

把想法变成MATLAB

处理一组文件

在MATLAB继续有问题新闻组关于处理一组文件。备案,尽管史蒂夫覆盖这一主题他的博客,我想我应该得到一个答案记录在这里。

内容

设置

我应该开始一个干净的工作空间和没有wav文件在我的博客发布目录。

清晰的所有删除* . wav

问题陈述

假设我想把声音存储在MATLAB mat文件为Windows文件保存在WAV格式。没有显式硬编码的文件名,这是前进的一种方式。

收集mat文件包含的声音

matfiles = dir (fullfile (matlabroot“工具箱”,matlab的,的音视频,‘* .mat‘))
matfiles = 7 x1结构体数组字段:名称字节isdir日期

查看文件

我们可以看到从我matfiles 7 mat文件的长度。我知道我不在乎第一个在这种情况下,我开始我的分析与第二个。

负载(matfiles (2) . name)谁
名称大小字节类Fs 1 x1 8双阵列matfiles x1 2435结构体数组y 13129 x1 105032双总计13390个元素使用107475字节数组

地方MAT-file内容的数据加载到结构从这里我可以得到我需要的信息,把它写出来。MATLAB船只的声音文件存储的数据y和采样频率Fs。让我们看看第一个信号。

N =长度(y);情节((1:N) / (N * Fs), y)、标题(matfiles (2) . name (1: end-4))

循环遍历文件

印第安纳州= 2:长度(matfiles)数据=负载(matfiles(印第安纳州). name);wavwrite (data . fs, data.y matfiles(印第安纳州). name (1: end-4));结束
警告:数据夹在写文件:龚警告:数据夹在写文件:长条木板警告:数据夹在写文件:火车

这些文件呢?

dir* . wav
唧唧声。wav亨德尔。wav长条木板。wav锣。wav笑声。wav train.wav

读取一个文件验证

我会仔细检查的最后一个文件我刚读和写。印第安纳州仍然是尽管不再循环。让我们检查频率和信号本身。

[ywav, Fswav] = wavread (matfiles(印第安纳州). name (1: end-4));eqFreqs = isequal (Fswav data . fs) datadiff =规范(ywav-data.y)
eqFreqs = 1 datadiff = 0.0010

wav文件中存储的数据存储在MAT-file一模一样。阅读的帮助wavwrite给人一些启示;wav文件中的数据,默认情况下,存储为16位数据与MATLAB的标准64位双。

想法吗?

它混淆了这里的人,我不担心向量化吗?任何其他的想法关于这个主题?


使用MATLAB®7.2发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。