luis@190
|
1
|
luis@190
|
2
|
luis@190
|
3 if strcmpi(DL.toolbox,'KSVD')
|
luis@190
|
4 param=DL.param;
|
luis@190
|
5 param.data=Problem.b;
|
luis@190
|
6
|
luis@190
|
7 D = eval([DL.name,'(param)']);%, ''t'', 5);']);
|
luis@190
|
8 elseif strcmpi(DL.toolbox,'KSVDS')
|
luis@190
|
9 param=DL.param;
|
luis@190
|
10 param.data=Problem.b;
|
luis@190
|
11
|
luis@190
|
12 D = eval([DL.name,'(param, ''t'', 5);']);
|
luis@190
|
13 elseif strcmpi(DL.toolbox,'SPAMS')
|
luis@190
|
14
|
luis@190
|
15 X = Problem.b;
|
luis@190
|
16 param=DL.param;
|
luis@190
|
17
|
luis@190
|
18 D = eval([DL.name,'(X, param);']);
|
luis@190
|
19 % As some versions of SPAMS does not produce unit norm column
|
luis@190
|
20 % dictionaries, we need to make sure that columns are normalised to
|
luis@190
|
21 % unit lenght.
|
luis@190
|
22
|
luis@190
|
23 for i = 1: size(D,2)
|
luis@190
|
24 D(:,i)=D(:,i)/norm(D(:,i));
|
luis@190
|
25 end
|
luis@190
|
26 elseif strcmpi(DL.toolbox,'SMALL')
|
luis@190
|
27
|
luis@190
|
28 X = Problem.b;
|
luis@190
|
29 param=DL.param;
|
luis@190
|
30
|
luis@190
|
31 D = eval([DL.name,'(X, param);']);
|
luis@190
|
32 % we need to make sure that columns are normalised to
|
luis@190
|
33 % unit lenght.
|
luis@190
|
34
|
luis@190
|
35 for i = 1: size(D,2)
|
luis@190
|
36 D(:,i)=D(:,i)/norm(D(:,i));
|
luis@190
|
37 end
|
luis@190
|
38
|
luis@190
|
39 elseif strcmpi(DL.toolbox,'TwoStepDL')
|
luis@190
|
40
|
luis@190
|
41 DL=SMALL_two_step_DL(Problem, DL);
|
luis@190
|
42
|
luis@190
|
43 % we need to make sure that columns are normalised to
|
luis@190
|
44 % unit lenght.
|
luis@190
|
45
|
luis@190
|
46 for i = 1: size(DL.D,2)
|
luis@190
|
47 DL.D(:,i)=DL.D(:,i)/norm(DL.D(:,i));
|
luis@190
|
48 end
|
luis@190
|
49 D = DL.D;
|
luis@190
|
50
|
luis@190
|
51 elseif strcmpi(DL.toolbox,'MMbox')
|
luis@190
|
52
|
luis@190
|
53 DL = wrapper_mm_DL(Problem, DL);
|
luis@190
|
54
|
luis@190
|
55 % we need to make sure that columns are normalised to
|
luis@190
|
56 % unit lenght.
|
luis@190
|
57
|
luis@190
|
58 for i = 1: size(DL.D,2)
|
luis@190
|
59 DL.D(:,i)=DL.D(:,i)/norm(DL.D(:,i));
|
luis@190
|
60 end
|
luis@190
|
61 D = DL.D;
|
luis@190
|
62
|
luis@190
|
63 % To introduce new dictionary learning technique put the files in
|
luis@190
|
64 % your Matlab path. Next, unique name <TolboxID> for your toolbox needs
|
luis@190
|
65 % to be defined and also prefferd API for toolbox functions <Preffered_API>
|
luis@190
|
66 %
|
luis@190
|
67 % elseif strcmpi(DL.toolbox,'<ToolboxID>')
|
luis@190
|
68 % % This is an example of API that can be used:
|
luis@190
|
69 % % - get training set from Problem part of structure
|
luis@190
|
70 % % - assign parameters defined in the main program
|
luis@190
|
71 %
|
luis@190
|
72 % X = Problem.b;
|
luis@190
|
73 % param=DL.param;
|
luis@190
|
74 %
|
luis@190
|
75 % % - Evaluate the function (DL.name - defined in the main) with
|
luis@190
|
76 % % parameters given above
|
luis@190
|
77 %
|
luis@190
|
78 % D = eval([DL.name,'(<Preffered_API>);']);
|
luis@190
|
79
|
luis@190
|
80 else
|
luis@190
|
81 printf('\nToolbox has not been registered. Please change SMALL_learn file.\n');
|
luis@190
|
82 return
|
luis@190
|
83 end
|