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

📄 pca_svm_trainx.m

📁 pca+svm源代码(matlab) matlab代码
💻 M
字号:
%本程序用于对训练样本提取独立主元,作为样本特征,并送入SVM分类器中训练
%图像的预处理中不取对数,也无须做幅度归一,由ICA的应用条件决定的。
%预处理后的图像以向量的形式按行排列

%%%%%%%%%%%    图像预处理部分    %%%%%%%%%%%%%%%%%%%%%
function main
clear all
disp('程序正在运行')
clear all
load T72_mag.mat
[T72]=subfunction1(mobandata);
load T72_fw.mat
fw_data=FW;
[fw_T72]=subfunction2(fw_data,T72);
clear mobandata;
clear FW;

load BMP_mag.mat
[BMP]=subfunction1(mobandata);
load BMP_fw.mat
fw_data=FW;
[fw_BMP]=subfunction2(fw_data,BMP);
clear mobandata;
clear FW;

load BTR_mag.mat
[BTR]=subfunction1(mobandata);
load BTR_fw.mat
fw_data=FW;
[fw_BTR]=subfunction2(fw_data,BTR);
clear mobandata;
clear FW;

%%%%%%%%%%%%  提取主元   %%%%%%%%%%%%%%%
m1=1;
m2=1;
m3=1;
for n=1:6
    L1=fw_T72(n);
    L2=fw_BMP(n); 
    L3=fw_BTR(n); 
    MIXimage_s=[T72(m1:m1+L1-1,:);BMP(m2:m2+L2-1,:);BTR(m3:m3+L3-1,:)];
    MIXimage_mean(n,:)=mean(MIXimage_s);
    X=MIXimage_s-ones(size(MIXimage_s,1),1)*MIXimage_mean(n,:);%?123*2113
    R=X*X';%123*123
    [v lambda]=eig(R);
    m=size(v,1);
    for i=1:m-40
        L(i)=lambda(m+1-i,m+1-i);
        u(:,i)=1/sqrt(L(i))*X'*v(:,m+1-i);
    end
    Proaxis{n}=u;%2113*83
    feature=X*u; %123*83
    clear L u;  
    %%%%%% SVM训练 %%%%%%%%%%%%%%
    Parameters=[2,1,0.75,1,10,35,0.001,0,0.3,0.3];   %线性分类器 
    Samples=[feature'];
    Label=[1*ones(1,L1) 2*ones(1,L2) 3*ones(1,L3)];%row
    [Alphay,SVs,Bias,Para,Ns]=osuSVMTrain(Samples,Label,Parameters,0);
    svm_classpara{n}={Alphay SVs Bias Para Ns};
    m1=m1+L1;
    m2=m2+L2;
    m3=m3+L3; 
end
save traindata.mat Proaxis MIXimage_mean svm_classpara;
disp('程序结束')
    
%%%%%%%%%%%%%%%%%%%%%%     SUBFUNCTION 1       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%    This function is to realize fft of  chips %%%%%%%%%%%%%%%%%%%%
 function [chips]=subfunction1(mobandata)
     for k=1:length(mobandata)
        chp=log10(mobandata{k}(33:97,33:97)+1);%取出65*65 不加一得出的是负值 
         fft_chip=fftshift(abs(fft2(chp)));%傅列变换,并把频域中的图像移到轴坐标中心
         fft_chip=fft_chip/max(max(fft_chip)); %幅度归一
         cut_chip1=fft_chip(1:65,33:65);%取出一半幅频信息
         X_chip1=reshape(cut_chip1,1,65*33);%形成列矢量
         chips(k,:)=X_chip1(33:65*33);%去掉一半直流    ?
     end       
%%%%%%%%%%%%%%%%%%%%%%%      SUBFUNCTION 2     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  This function is to separate the chip into subgroups   %%%%%%%%%%%%%
function [sub_chips]=subfunction2(fw_data,chips);
Az1=0;
Az2=60;         %*************参数方位组有关,10表示方位范围

for n=1:6      %每10度方位内形成一个模板,共有4个。%********参数方位组有关
    fw1=find(fw_data>=Az1);
    fw2=find(fw_data>Az2);
    sub_chips(n)=abs(length(fw1)-length(fw2));%寻找10度方位内图象的个数。
    Az1=Az1+60;  %********参数方位组有关
    Az2=Az2+60;  %********参数方位组有关
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -