函数 > 读取和写入文件 > 示例:使用 WAV 文件和创建光谱图
  
示例:使用 WAV 文件和创建光谱图
使用函数 READWAVGETWAVINFO 从 WAV 文件中读取并获得格式信息。
获得 WAV 信息
1. 使用 GETWAVINFO 从声音文件获得信息。该声音文件是一个原海豚鲸发声的样本。可以用任何音乐播放器来播放该文件。
单击复制此表达式
矢量包含通道数、取样速率、分辨率 (每个样本的位数) 和音频播放器为实时播放音频而每秒需处理的平均字节数。
2. 计算矢量变量。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
读入声音文件
1. 使用 READWAV 函数来读取声音文件并将其保存到矢量中。
单击复制此表达式
如果 READWAV 返回一个矩阵,连续列分别代表单独的数据通道。
2. 使用 length 函数来计算样本总数。
单击复制此表达式
单击复制此表达式
3. 绘制信号图像。
单击复制此表达式
4. 使用函数 matchmaxmin 求出具有最大幅度和最小幅度的样本,然后求出对应的样本时间。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
5. 绘制前 25000 个样本的图象并使用标记显示具有最大幅度的样本。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
创建光谱图
将数据分割成小的时间切片来分析声音数据,并查看每个切片的频谱。该示例采用含 128 个样本的切片。
1. 定义 2 次方形式的切片尺寸矢量。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
其中,ss 是切片矩阵的行数。
2. 定义重叠因子在 0-90% 之间的矢量,增量为 10
单击复制此表达式
单击复制此表达式
重叠不可能为 100%
3. 设置重叠因子,并使用函数 floorceil 定义矩阵的大小。
单击复制此表达式
如果将重叠设为零,则 Data 矢量会被分割成多个 ss 长区块。随着重叠的增加,ss 长区块的数量也会增加,如下列方程所示:
单击复制此表达式
单击复制此表达式
每个切片尺寸和重叠因子的组合会产生不同的矩阵维数:
单击复制此表达式
使用 ss=128overlap=40% 会产生一个可能需要花费很长时间来构建与绘制的 128x2602 矩阵。
4. 创建矢量 TI,以便将 ti 设置为等于或小于 ti 值的 10 个值之一。
单击复制此表达式
单击复制此表达式
5. ti 设置为 TI 的中间元素之一并观察位于工作表底部的等值线图。
单击复制此表达式
单击复制此表达式
单击复制此表达式
新的切片矩阵维度现为:
单击复制此表达式
6. 使用 Hamming 窗口设置每个切片的窗口。
单击复制此表达式
单击复制此表达式
单击复制此表达式
7. 使用函数 log 表示频率,以分贝为单位。
单击复制此表达式
8. 使用函数 dft (或已弃用的 fft) 求切片的傅立叶变换。
单击复制此表达式
要使用已弃用的 fft 函数,请禁用上述值域并启用下方值域。
单击复制此表达式
9. 使用等值线图绘制 spectra 的图像。
单击复制此表达式
10. 练习使用不同的切片尺寸 (ss)、overlapti 值。然而,要观察对计算和绘制次数的影响,建议您每次更改一个参数,同时将另两个参数保持为其默认值 [128 0.4 82]
ssoverlapti 的当前设置如下所示:
单击复制此表达式