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

18 次查看(过去 30 天)
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???

回答(2 个)

Royi Avital
Royi Avital 2016-3-4
编辑:Royi Avital 2020-12-19
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');
end
end
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(:)))
end
end
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.

murat simsek
murat simsek 2016-3-17
What is the meaning of "mD" parameter?

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by