This page provides source code for the paper:
D. L. Sun and R. Mazumder. Non-negative matrix completion for bandwidth extension: a convex optimization approach, IEEE Workshop on Machine Learning and Signal Processing (MLSP), September 2013.
Matlab code: nmc_admm.m
Example usage:
% generate a random matrix to start (just for testing the code)
V = rand(1000, 1000);
% specify which entries in V are missing
missing = false(size(V));
missing(501:1000, 501:1000) = 1; % set quarter of entries to be missing
% specify which entries in V should be held fixed (i.e., not updated in the algorithm)
fixed = false(size(V));
fixed(1:1000, 1:500) = 1; % hold first half of matrix fixed
% other parameters of the algorithm
lam = 1; % regularization parameter in the objective function
rho = 1; % ADMM parameter
beta = 1; % set beta=1 for KL divergence, beta=2 for Euclidean distance
% run non-negative matrix completion algorithm
[X, ~, ~, ~] = nmc_admm(V, missing, fixed, lam, rho, beta);
Please feel free to contact me with any questions and bug reports: dlsun@stanford.edu.
In the paper, we applied non-negative matrix completion to the problem of bandwidth extension. Shown below are spectrograms of the bandlimited signal, the full-bandwidth training data, and the recovered signal, alongside the ground truth. You can listen to the audio by clicking on the link below.
Bandlimited Signal | Training Data | Bandwidth Extended | Ground Truth |
---|---|---|---|
Back in Black | Highway to Hell | Back in Black | Back in Black |