-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain_recomBand.m
63 lines (45 loc) · 1.17 KB
/
main_recomBand.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
close all
clear
clc
%% upload dataset
load PaviaU;
img_src= paviaU;
clear paviaU;
load PaviaU_gt;
img_gt = paviaU_gt;
clear paviaU_gt;
Label = img_gt(:);
[M,N,Band] = size(img_src);
sz = size(img_src);
img_src = double(img_src);
img_src = reshape(img_src,sz(1)*sz(2),sz(3));
img_src = img_src';
%% normalization
imgz = img_src(:);
imgz = mapminmax(imgz',0,1);
img = reshape(imgz,Band,M*N);
%% compute information entrop
totalNumber = M*N;
randNumber = floor(totalNumber*0.01);
for i=1:Band
randIndex(i,:) = randperm(totalNumber,randNumber);
imgx(i,:) = img(i,randIndex(i,:));
end
for i = 1:Band
mVar(i) = Entrop(imgx(i,:));
end
mVar = (mVar - min(mVar)) / (max(mVar) - min(mVar));
mVar = mVar';
%% compute similarity matrix
S = get_D(img');
%% band selection
range = 5:30; % the number of selected bands
for classNum = 1:length(range)
K = range(classNum) + 1;
bandSubspace = subspacePart(S,Band,K);
selectedBand = repBands(K, bandSubspace,S,mVar);
RecommandBand(classNum) = recomBand(selectedBand,img);
bandSubspace = [];
selectedBand = [];
end
cftool % Note that we adopt cruve fitting tool to fit values of discrete probability