首页 > 解决方案 > MATLAB 不播放加载的 .wav 文件

问题描述

我使用 audioread 功能从文件夹中加载几个音频文件,如下所示:

for audio_numm = 1:24

    [sound{audio_numm},freq{audio_numm} ] = audioread(strcat('./M_S',int2str(audio_numm),'.wav'));
end

它加载没有任何问题,但是当我尝试使用以下功能播放其中任何一个时:

for i=1:24
     sound(sound{i})
end

我收到以下错误:

下标索引必须是实数正整数或逻辑数。

.wav 文件保存在一个 1x24 数组中,其中每个元素都是另一个一维数组。我该如何解决这个问题?

标签: matlabaudio

解决方案


该错误来自一个变量以内置函数名称命名的事实sound

Matlab说的是:

避免创建与函数同名的变量(例如 i、j、mode、char、size 和 path)。通常,变量名优先于函数名。如果你创建一个使用函数名的变量,你有时会得到意想不到的结果。

所以在 for 循环中,你期望的函数实际上是变量sound。所以它是用非整数值索引的。

您可以使用命令检查名称是否已被使用exists,如果未使用该名称,它将返回零:

exist toto

ans =

     0 

感谢@Brice 纠正我。


推荐阅读