1 | function y = compare(M,INC,r,ERR,n,starts) |
---|
2 | % run shum's method, and mine on the same matrix, and compare with ground truth. |
---|
3 | % Gaussian error is added to the matrix, with sigma as given. |
---|
4 | global Mexternal INCexternal |
---|
5 | |
---|
6 | num_random_starts = starts; |
---|
7 | num_data = num_random_starts+2+2; |
---|
8 | % random starts + my method + my method & iterative, + ground truth + g.t. & it. |
---|
9 | |
---|
10 | [M, INC, ERR] = rem_inc_els(M, INC, ERR, r); |
---|
11 | Merr = M + ERR; |
---|
12 | Mexternal = Merr; |
---|
13 | INCexternal = INC; |
---|
14 | INCsize = min(size(INC)); |
---|
15 | if INCsize < r |
---|
16 | y = repeat(-2,num_data); |
---|
17 | else |
---|
18 | shum_err = []; |
---|
19 | for i=1:num_random_starts |
---|
20 | shum_err = [shum_err,shum(Merr,INC,r,0,100)]; |
---|
21 | end |
---|
22 | [rankr_err, rankr_res] = rankr(Merr,INC,r,n); |
---|
23 | if rankr_err == -2 |
---|
24 | rankr_shum_err = -2; |
---|
25 | else |
---|
26 | rankr_shum_err = shum(Merr,INC,r,rankr_res,100); |
---|
27 | end |
---|
28 | % if r==2 |
---|
29 | % [rankall_err, rankall_res] = rank2(Merr,INC); |
---|
30 | % elseif r==3 |
---|
31 | % [rankall_err, rankall_res] = rank3(Merr,INC); |
---|
32 | % else |
---|
33 | % rankall_err = -2; |
---|
34 | % end |
---|
35 | % if rankall_err == -2 |
---|
36 | % rankall_shum_err = -2; |
---|
37 | % else |
---|
38 | % rankall_shum_err = shum(Merr,INC,r,rankall_res,100); |
---|
39 | % end |
---|
40 | ground_truth_err = sum(sum((M.*INC - Merr.*INC).^2)); |
---|
41 | gt_shum_err = shum(Merr,INC,r,M,100); |
---|
42 | y=[shum_err,rankr_err,rankr_shum_err,ground_truth_err,gt_shum_err]; |
---|
43 | end |
---|