使用此声音文件:http://www.ism.ac.jp/~shiro/research/sounds/RSM/X_rsm2.wav
我正在尝试在 matlab 中从 coursera 重新创建 Andrew Ng 的机器学习演示文稿 ( https://class.coursera.org/ml-005/lecture )
我所做的是读取 .wav 文件(16khz,7 秒,2 个 channel )
[x,xfs] = wavread('track.wav')
现在我转置 x
x = 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
分离的音频在哪里?
编辑:通过进一步的研究,我发现 W 只是分解矩阵。这意味着如果我的目标是获得两个输出分离的声源,则该算法是不完整的。我该如何处理这个分解矩阵?
最佳答案
我相信您想将通过 SVD 找到的解混合矩阵 W
应用于混合信号 x
。这可以简单地完成如下:
sigs = W*x;
现在 sigs(1,:)
将是分离的信号之一,sigs(2,:)
将是另一个。
祝你好运。
关于matlab - 尝试在 Matlab 中重新创建鸡尾酒会算法,结果错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008634/