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 |