www.pudn.com > RobustSF.zip > demo1.m, change:2014-09-01,size:1907b

% KSVD running file % in this file a synthetic test of the K-SVD algorithm is performed. First, % a random dictionary with normalized columns is being generated, and then % a set of data signals, each as a linear combination of 3 dictionary % element is created, with noise level of 20SNR. this set is given as input % to the K-SVD algorithm. % a different mode for activating the K-SVD algorithm is until a fixed % error is reached in the Sparse coding stage, instead until a fixed number of coefficients is found % (it was used by us for the % denoising experiments). in order to switch between those two modes just % change the param.errorFlag (0 - for fixed number of coefficients, 1 - % until a certain error is reached). param.L = 3; % number of elements in each linear combination. param.K = 50; % number of dictionary elements param.numIteration = 50; % number of iteration to execute the K-SVD algorithm. param.errorFlag = 0; % decompose signals until a certain error is reached. do not use fix number of coefficients. %param.errorGoal = sigma; param.preserveDCAtom = 0; %%%%%%% creating the data to train on %%%%%%%% N = 1500; % number of signals to generate n = 20; % dimension of each data SNRdB = 20; % level of noise to be added [param.TrueDictionary, D, x] = gererateSyntheticDictionaryAndData(N, param.L, n, param.K, SNRdB); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% initial dictionary: Dictionary elements %%%%%%%% param.InitializationMethod = 'DataElements'; param.displayProgress = 1; disp('Starting to train the dictionary'); [Dictionary,output] = KSVD(D,param); disp(['The KSVD algorithm retrived ',num2str(output.ratio(end)),' atoms from the original dictionary']); [Dictionary,output] = MOD(D,param); disp(['The MOD algorithm retrived ',num2str(output.ratio(end)),' atoms from the original dictionary']);