⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuzzyintegralsfusion.m

📁 可以直接用
💻 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 + -