In a paper by Fevotte et al. on IS-NMF, which describes algorithms/implementation for multiplicative and EM variants of IS-NMF, the following algorithm is provided for IS-NMF/EM:

enter image description here

In the algorithm's footnote, the authors state that the VHAT matrix $\hat{\mathbf{V}}$ only needs to be calculated during initialization, but then go on to say that $\hat{\mathbf{V}}$ is subsequently updated as $\hat{\mathbf{V}}=\mathbf{W}_{-k}\mathbf{H}_{-k} + \mathbf{w}^{new}_k h^{new}_k$ during each iteration.

Therefore, I believe that the hat matrix $\hat{\mathbf{V}}$ actually needs to be updated inside the iterations. So my question is: Before I start coding anything, shouldn't an update for $\hat{\mathbf{V}}$ be appropriately placed inside the iterative loops? Also, where would you place it? Better yet, where would you place all the updates mentioned in the footnote, so that the footnote is not needed. (why mention updating of coefficients/parameters in a footnote if they can be placed in the algorithm?)


The implementation in MATLAB is here: https://www.irit.fr/~Cedric.Fevotte/extras/neco09/code.zip

  • $\begingroup$ Thanks, will look it over. $\endgroup$ – JoleT Nov 7 '19 at 5:41
  • $\begingroup$ Using the predicted $\mathbf{V}_k$ for each source based on NMF with the first 512 rows of STFT, then making XmagHat from rows 1,2,...,512,511,510,...1 from $\mathbf{V}_k$, applying phase, then IFFT, the EM results are not much better than the MU. I'll have to try by using the mask arrays from NMF times the mixed STFT, expand to 1023-row XmagHat, apply phase, then IFFT to see what happens. $\endgroup$ – JoleT Nov 7 '19 at 20:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.