📄 rekdaqrnn.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
% filename1='F:\Document\PH.D.Program\雷达数据\radardata\an4';
% filename2='F:\Document\PH.D.Program\雷达数据\radardata\jiang4';
% filename3='F:\Document\PH.D.Program\雷达数据\radardata\yak2';
filename1='F:\Document\PH.D.Program\雷达数据\radardata\an4';
filename2='F:\Document\PH.D.Program\雷达数据\radardata\jiang7';
filename3='F:\Document\PH.D.Program\雷达数据\radardata\yak1';
% d the variable parameter of RBF kernel
% g the index number of polynomial kernel
d=0.5;
g=2;
bangle=1;
angle=60
QQ=12 % k-NFL or k-NFP的最邻元素个数
eachnum=angle-bangle+1;
classnum=3;
trnum=eachnum/2;
tenum=eachnum/2;
load(filename1);
aa=getrp(x);
Tr1=aa(:,bangle:2:angle);
Te1=aa(:,(bangle+1):2:angle);
load(filename2);
aa=getrp(x);
Tr2=aa(:,bangle:2:angle);
Te2=aa(:,(bangle+1):2:angle);
load(filename3);
aa=getrp(x);
Tr3=aa(:,bangle:2:angle);
Te3=aa(:,(bangle+1):2:angle);
% normalization
for i=1:trnum
Tr1(:,i)=Tr1(:,i)/norm(Tr1(:,i));
Tr2(:,i)=Tr2(:,i)/norm(Tr2(:,i));
Tr3(:,i)=Tr3(:,i)/norm(Tr3(:,i));
end
for i=1:tenum
Te1(:,i)=Te1(:,i)/norm(Te1(:,i));
Te2(:,i)=Te2(:,i)/norm(Te2(:,i));
Te3(:,i)=Te3(:,i)/norm(Te3(:,i));
end
L=[Tr1 Tr2 Tr3]';
T=[Te1 Te2 Te3]';
train_num=trnum*classnum;
test_num =tenum*classnum;
for i=1:classnum
S1(i*trnum-trnum+1:i*trnum,1)=i;
S2(i*tenum-tenum+1:i*tenum,1)=i;
end
% feature extraction part
% Build the KDA+QR solution (give a data structure)
% function [dataKDAQR, centroids, K]=buildKDAQR(L,S)
tic
[dataKDAQR,centeredkM,K]=buildKDAQR(L,S1);
t=toc;
% return
% % L为行矢量
% classnum=max(S);
% n = size(L,1); % 训练样本个数
% k = classnum; % 类别数
% d = size(L,2); % 训练样本维数
% av = mean(L)'; % 总平均列矢量
% % d the variable parameter of RBF kernel
% % g the index number of polynomial kernel
% d=0.5;
% g=2;
%
% TL = L'; % 翻转,训练样本矩阵变为列矩阵
%
% % 按类别顺序组成一个包含各自样本数的矩阵
% numarray = [];
% for i = 1:k
% numarray = [numarray,length(find(S==i))];
% end
%
% % 构建均值矩阵
% centroids = [];
% for s = 1:k
% loc = find(S==s);
%
% x = mean(TL(:,loc)')';
%
% centroids = [centroids, x];
% end
%
% % kernel matrix (uncentered)
% K=zeros(n);
% for i=1:n
% for j=1:n
% K(i,j)=KernelFunction(L(i,:),L(j,:),d,g);
% end
% end
%
%
% M = zeros(n,k);
% N = zeros(n,k);
% E = zeros(n,n);
%
% pos = 0;
% for i = 1:k
% M(pos+1:pos+numarray(i),i)= 1/numarray(i);
% pos = pos + numarray(i);
% end
%
% pos = 0;
% for i = 1:k
% N(pos+1:pos+numarray(i),i)= 1/sqrt(numarray(i));
% N(:,i) = N(:,i) - sqrt(numarray(i))/n;
% pos = pos + numarray(i);
% end
%
% KM = K*M;
% Y = N'*KM;
% Z = KM - ones(n,1)*(ones(1,n)*KM)/n;
%
% R = chol (M'*K*M);
% invR = inv(R);
% B = invR'*Y'*Y*invR;
% W = invR'*Z'*Z*invR;
%
% reg=1e-3;
% [V,D] = eig(inv(W+ reg*eye(k))*B);
%
% dataKDAQR=V'*inv(R')*M';
features=K*dataKDAQR';
toc
K_test=zeros(test_num,train_num);
for i=1:test_num
for j=1:train_num
K_test(i,j)=KernelFunction(T(i,:),L(j,:),d,g);
end
end
test_features=K_test*dataKDAQR';
% 第二种方法,将比较测试矢量将与各类训练特征的均值之间测距,选最小值做为一个分类
% tm1=mean(features(1:trnum,:),1);
% tm2=mean(features(trnum+1:2*trnum,:),1);
% tm3=mean(features(2*trnum+1:3*trnum,:),1);
% trnum=1;
%
% features=[tm1;tm2;tm3];
% recognize it with nn classifier
% Nearest Neighbour Classifier-NNC
% function [NNCrate]=NNclassifier(features,test_features,trnum,tenum,classnum)
KDAQRNNrate=NNclassifier(features,test_features,trnum,tenum,classnum)
% Nearest Neighbour Classifier-NNC_1
% function [NNCrate]=NNclassifier_1(features,test_features,S1,S2,classnum)
KDAQRNN_1rate=NNclassifier_1(features,test_features,S1,S2,classnum)
return
% Nearest Feature Line Classifier-NFL
% function [NFLCrate]=NFLclassifier(features,test_features,trnum,tenum,classnum)
% NFLCrate=NFLclassifier(features',test_features',trnum,tenum,classnum)
% return
% Modified Nearest Feature Line Classifier-MNFL
% function [MNFLCrate]=MNFLclassifier(features,test_features,trnum,tenum,classnum,K)
% MNFLCrate=MNFLclassifier(features',test_features',trnum,tenum,classnum,QQ)
% return
% Nearest Feature Plane Classifier-NFP
% function [NFPCrate]=NFPclassifier(features,test_features,trnum,tenum,classnum)
% NFPCrate=NFPclassifier(features',test_features',trnum,tenum,classnum)
% return
% Modified Nearest Feature Plane Classifier-MNFP
% function [MNFPCrate]=MNFPclassifier(features,test_features,trnum,tenum,classnum,K)
MNFPCrate=MNFPclassifier(features',test_features',trnum,tenum,classnum,QQ)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -