MATLAB не воспроизводит загруженный файл .wav - PullRequest
0 голосов
/ 08 ноября 2018

Я загружаю пару аудиофайлов из папки с функцией аудиозаписи следующим образом:

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, где каждый элемент является другим одномерным массивом. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 08 ноября 2018

Ошибка возникает из-за того, что переменная имеет имя с именем встроенной функции sound.

Что Matlab говорит:

Избегайте создания переменных с тем же именем, что и у функции (например, i, j, mode, char, size и path). Как правило, имена переменных имеют приоритет над именами функций. Если вы создаете переменную, которая использует имя функции, вы иногда получаете неожиданные результаты.

Таким образом, в цикле for вы ожидаете, что функция будет на самом деле переменной sound. Таким образом, он был проиндексирован с нецелыми значениями.

Вы можете проверить, если имя уже занято с помощью команды exists, оно вернет ноль, если имя не взято:

exist toto

ans =

     0 

Спасибо @Brice за поправку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...