Мне нужно рассчитать некоторые особенности речи в Matlab. Однако я не знаю, какие операции мне нужно выполнить после получения данных из функции wavread, прежде чем я смогу использовать формулу формулы (например, формулу RMS).Matlab вычисляет речевые функции (например, RMS)
Один 1 сайт я только что нашел это:
rmsVec(m) = sqrt(sum(wavData{m}(:).^2)/length(wavData{m}(:)));
Но на другой они использовали ДПФ, а затем некоторые операции с реальными и представить себе часть матрицы/вектора, который я не понимаю.
Итак, как это должно быть?
У меня есть голосовая библиотека, но я не нашел там вычисляющих rms.
Моя версия MATLAB: R2009b
EDIT:
http://www.edaboard.com/thread163664.html см домовой и petejonze ответы
Благодаря petejonze это не имеет значения, используете ли я время или частотной области, но
[y, fs, aa] = wavread('C:\Users\lukasz\Desktop\semestr 7\inzynierka\dzwieki\uczace\dol\dol_50')
y1 = y(:,1)
Y1 = fft(y1)
rms1 = sqrt(mean(y1.^2))
rms2 = sqrt(sum(Y1.*conj(Y1))/size(Y1,1))
и результаты:
rms1 =
0.0577
rms2 =
13.2706
Так что я немного смущен. Какой из них правильный?
EDIT 2:
Другой пример:
>> y = [1;2;3]
y =
1
2
3
>> Y = fft(y)
Y =
6.0000
-1.5000 + 0.8660i
-1.5000 - 0.8660i
>> rms1 = sqrt(mean(y.^2))
rms1 =
2.1602
>> rms2 = sqrt(sum(Y.*conj(Y))/size(Y,1))
rms2 =
3.7417
>> size(Y,1)
ans =
3
>> Y.*conj(Y)
ans =
36
3
3
Так эта формула
sqrt(sum(Y1.*conj(Y1))/size(Y1,1))
неправильно и должно быть
sqrt(sum(Y1.*conj(Y1))/size(Y1,1)^2)
?
Под редакцией мой вопрос. Не могли бы вы это проверить? – user3565261
Я обновил ответ. –
Ваше предложение о размере (Y1,1) = 1 неверно. Это выражение в случае этого wav-файла равно 52920. Размер (Y1, 2) равен 1. – user3565261