Я использую функцию sound() в MATLAB для генерации тона. Эта функция играет тон в течение 4 секунд при 440Hz:MATLAB: audioplayer()
duration = 4
toneFreq = 440
samplesPerSecond = 44100; % the bit rate of the tone
y = sin(linspace(0, duration * toneFreq * 2 * pi, round(duration * samplesPerSecond))); % the equation of the sound wave
sound(y, samplesPerSecond); % play the sound wave at the specified bit rate
Иногда (после использования функции несколько раз), я получаю сообщение об ошибке от MATLAB, говоря «не может зарегистрировать звук окна». Немного осмотрев интернет, я заметил, что это известная ошибка в MATLAB (версия R14 SP3), и поэтому общий совет, похоже, заключается в использовании 'audioplayer' function. Таким образом, я обновил свой код до следующего:
duration = 4
toneFreq = 440
samplesPerSecond = 44100; % the bit rate of the tone
y = sin(linspace(0, duration * toneFreq * 2 * pi, round(duration * samplesPerSecond))); % the equation of the sound wave
player = audioplayer(y, samplesPerSecond); % play the sound wave at the specified bit rate
play(player)
Однако это не вызывает тональности. Может ли кто-нибудь помочь в создании этого нового кода?
Ваш новый код работает для меня. Поскольку ваш старый код работал некоторое время, и они остановились, это может быть что-то связанное с Java или аудио-драйвером, я не уверен. Вы пытались перезапустить MATLAB или компьютер? – yuk
Старый код работает, но иногда он терпит неудачу и выдает сообщение об ошибке. Затем мне нужно перезапустить MATLAB :( – CaptainProg
Я нашел корень проблемы - мой код находится в пределах собственной функции. Как только функция заканчивается, она останавливает воспроизведение звука. Поскольку последнее действие моей функции - воспроизведение тон, звук прекращается до того, как он действительно начнет работать. Как преодолеть это? – CaptainProg