Clear Filters
Clear Filters

Can any body tell me how to implement KSVD in matlab?

19 views (last 30 days)
i am doing the project on "quaternion matrix analysis of color image using vector sparse model" so i need to implement ksvd so can please anynoe help me???

Answers (2)

Royi Avital
Royi Avital on 4 Mar 2016
Edited: Royi Avital on 19 Dec 2020
Here is a function which implements the K-SVD algorithm.
function [ mD ] = DL_KSVD( mD, mX, paramCardinality )
numberOfAtoms = size(mD, 2);
for ii = 1:50
%<! Update the Representations
mA = Omp(mX, mD, paramCardinality);
%<! Update the Dictionary
for jj = 1:5
mE = mX - (mD * mA);
for kk = 1:numberOfAtoms
vP = find(mA(kk, :));
mEP = mE(:, vP) + mD(:, kk) * mA(kk, vP);
vA = mD(:, kk)' * mEP;
mA(kk, vP) = vA;
mD(:, kk) = mEP * vA' / (vA * vA');
mD = bsxfun(@rdivide, mD, sqrt(sum(mD .^ 2, 1)));
%%Progress (Debug):
% mA = omp(mD' * mX, mD' * mD, cardinality);
% mX_hat = mD * mA;
% A = mean(abs(mX(:) - mX_hat(:)))
The Omp() function mA = Omp(mX, mD, paramCardinality) solves mD * mX - mA_2 s.t. each column of mA has cardinality (L0 Pseudo Norm) less equal to paramCardinality. It uses the Orthogonal Matching Pursuit method.
  1 Comment
RS SHARMA on 29 Apr 2018
can i have function omp(mX.mD,cardinality). cardinality means what value..give example.

Sign in to comment.

murat simsek
murat simsek on 17 Mar 2016
What is the meaning of "mD" parameter?


Find more on Startup and Shutdown in Help Center and File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!