📄 fuzzyintegralsfusion.m
字号:
function FusionDetectionResult = FuzzyIntegralSFusion(HyperCube)
[NumRows,NumCols,NumBands] = size(HyperCube);
indexLength = fix(NumBands/3);
SubHyperCube1 = HyperCube(:,:,1:indexLength);
SubHyperCube2 = HyperCube(:,:,indexLength+1:indexLength*2);
SubHyperCube3 = HyperCube(:,:,indexLength*2+1:end);
dCube(:,:,1) = RXcov_detector(SubHyperCube1); %%% dRXcov
dCube(:,:,2) = RXcov_detector(SubHyperCube2);
dCube(:,:,3) = RXcov_detector(SubHyperCube3);
gFI = [indexLength/NumBands indexLength/NumBands (NumBands-2*indexLength)/NumBands];
lamtaSym = solve('1+x =((indexLength/NumBands)*x+1)*((indexLength/NumBands)*x+1)*(((NumBands-2*indexLength)/NumBands)*x+1)');
lamta = eval(lamtaSym);
lamta(1) = [];
for i = 1:length(lamta)
index(i) = isreal(lamta(i));
end
lamta(find(index==0))=[];
lamta(find(lamta<-1))=[];
if length(lamta)==0||length(lamta)>1
UniqueLamta = 0;
else
UniqueLamta = lamta;
end
dMatrix = reshape(dCube, NumRows*NumCols,3);
for i = 1:3
temp = dMatrix(:,i)';
hFI(i,:) = temp/max(temp);
end
hFI = hFI';
for j = 1:NumRows*NumCols
NumSources = length(hFI(j,:));
[SortedhFI,IndexSortedhFI] = sort(hFI(j,:));
SortedhFI = flipud(SortedhFI');
SortedhFI = SortedhFI';
IndexSortedhFI = flipud(IndexSortedhFI');
IndexSortedhFI = IndexSortedhFI';
SortedgFI = gFI(IndexSortedhFI);
gAFI = zeros(size(SortedgFI));
gAFI(1)=SortedgFI(1);
for i = 2:3
gAFI(i)=SortedgFI(i)+gAFI(i-1)+UniqueLamta*SortedgFI(i)*gAFI(i-1);
end
temp = [SortedhFI;gAFI];
eFISugeno(j) = max(min(temp,[],1));
end
FusionDetectionResult = reshape(eFISugeno,NumRows,NumCols);
function dRXcov = RXcov_detector(X)
% The Abnormaly Detector RX using Covariance Matrix
% Input: X -- The HyperCube
% Output: D -- The quatratic statistics of the RX detector
[num_row,num_col,num_bands] = size(X);
for i = 1:num_bands
Y(i,:) = reshape(X(:,:,i),1,num_row*num_col);
end
Y = Y';
CovMat = cov(Y); %spactral covariance matrix
InvCovMat = pinv(CovMat); %对协方差阵求逆
MeanY = mean(Y);
for i=1:num_row*num_col
t=Y(i,:);
tempD(i)=(t-MeanY)*InvCovMat*(t-MeanY)';
end
dRXcov = reshape(tempD,num_row,num_col);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -