используя этот звуковой файл: http://www.ism.ac.jp/~shiro/research/sounds/RSM/X_rsm2.wavПопытка воссоздать алгоритм коктейля в Matlab, Неверные результаты?
Я пытаюсь воссоздать Machine Learning презентации Эндрю Нг (https://class.coursera.org/ml-005/lecture) от Coursera в MATLAB
Что я делаю, чтобы прочитать .wav файл (16кГц, 7 сек, 2 канала)
[x,xfs] = wavread('track.wav')
Теперь транспонирование х
x = x'
Теперь перейдем к используйте й на алгоритме коктейля
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x')
MATLAB возвращает:
W =
-0.9233 -0.3841
-0.3841 0.9233
s =
265.4832 0
0 13.0768
v =
-0.9233 -0.3841
-0.3841 0.9233
Где находится отделенный аудио?
EDIT: Из дальнейших исследований я выяснил, что W является только матрицей смешения. Это означает, что этот алгоритм является неполным, если моя цель состоит в том, чтобы получить два выходных источника звука. Что мне делать с этой матрицей смешения?
Теперь, прежде чем я подключу x к алгоритму, я сначала перенести его, как вы сказали. Я больше не получаю ошибку «Из памяти»! Но я смущен результатами W, s, v. Они имеют размер 2x2. Разве они не должны быть отделенным звуком? – Shonos
Возможно, попробуйте перенести результат 'repmat'? – MrAzzaman
В действительности это не была функция svd, это были умножения матриц, которые не могут быть умножены из-за их размера. – Shonos