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

📄 main10.m

📁 个人硕士论文的关于数字接收机调制解调方面的matlab程序
💻 M
字号:
%产生4个节点的训练集
clear all;
rb=1000;%码率
fc=12000;%载频
df=rb;%FSK调制频偏
N=50;%码元个数
L=120;%每个码字采样数
%-------------------------------------------
%nodel, 产生训练节点1的输入矩阵和目标矩阵
i=1;
p1=zeros(1,225);k1=0.1*ones(3,225);
for j=1:5
    for snr_in_db=25:-5:5
        for k=1:9
            x=modulator(rb,fc,snr_in_db,k,df,N,L);
            p=paracaculator2(x);
            disp(i);disp(k);disp(p(1));
            p1(:,i)=p(1);
            switch k
                case{1,4,}
                    k1(1,i)=0.9;
                case{9}
                    k1(2,i)=0.9;
                otherwise
                    k1(3,i)=0.9;
            end
            i=i+1;
        end
    end
end
save p1.mat p1;
save k1.mat k1;
%---------------------------------------------------
%node 2, 产生训练节点的输入矩阵和目标矩阵
i=1;
p2=zeros(1,50);k2=0.1*ones(2,50);
for j=1:5
    for snr_in_db=25:-5:5
        k=1;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(2));
        p2(:,i)=p(2);
        k2(1,i)=0.9;
        i=i+1;
        k=4;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(2));
        p2(:,i)=p(2);
        k2(2,i)=0.9;
        i=i+1;
    end
end
save p2.mat p2;
save k2.mat k2;
%-----------------------------------------------------
%node 4,产生训练节点4的输入矩阵和目标矩阵
i=1;
p4=zeros(1,150);k4=0.1*ones(4,150);
for j=1:5
    for snr_in_db=25:-5:5
        k=3;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(1,i)=0.9;
        i=i+1;
        k=6;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(2,i)=0.9;
        i=i+1;
        k=8;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(3,i)=0.9;
        i=i+1;
        k=2;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(4,i)=0.9;
        i=i+1;
        k=5;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(4,i)=0.9;
        i=i+1;
        k=7;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(4));
        p4(:,i)=p(4);
        k4(4,i)=0.9;
        i=i+1;
    end
end
save p4.mat p4;
save k4.mat k4;
%--------------------------------------------------
%node 5,产生训练节点5的输入矩阵和目标矩阵
i=1;
p5=zeros(1,75);k5=0.1*ones(2,75);
for j=1:5
    for snr_in_db=25:-5:5
        k=2;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(5));
        p5(:,i)=p(5);
        k5(1,i)=0.9;
        i=i+1;
        k=5;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(5));
        p5(:,i)=p(5);
        k5(2,i)=0.9;
        i=i+1;
        k=7;
        x=modulator(rb,fc,snr_in_db,k,df,N,L);
        p=paracaculator2(x);
        disp(i);disp(k);disp(p(5));
        p5(:,i)=p(5);
        k5(2,i)=0.9;
        i=i+1;
    end
end
save p5.mat p5;
save k5.mat k5;
%对各节点进行训练
load p1.mat;
load k1.mat;
load p2.mat;
load k2.mat;
%load p3.mat;
%load k3.mat;
load p4.mat;
load k4.mat;
load p5.mat;
load k5.mat;
%load p6.mat;
%load k6.mat;
%---------------------------------------------
%node 1
p=p1;t=k1;sl=2;df=25;me=30000;eg=0.01;lr=0.001;
[w11,b11,w21,b21,ep,tr]=trainNN(p,t,sl,df,me,eg,lr);NNTWARN OFF;
save w11.mat w11;
save b11.mat b11;
save w21.mat w21;
save b21.mat b21;
%---------------------------------------------
%node 2
p=p2;t=k2;sl=2;df=25;me=30000;eg=0.01;lr=0.001;
[w12,b12,w22,b22,ep,tr]=trainNN(p,t,sl,df,me,eg,lr);NNTWARN OFF;
save w12.mat w12;
save b12.mat b12;
save w22.mat w22;
save b22.mat b22;
%---------------------------------------------
%node 3
%p=p3;t=k3;sl=2;df=25;me=30000;eg=0.01;lr=0.001;
%[w13,b13,w23,b23,ep,tr]=trainNN(p,t,sl,df,me,eg,lr);NNTWARN OFF;
%save w13.mat w13;
%save b13.mat b13;
%save w23.mat w23;
%save b23.mat b23;
%---------------------------------------------
%node 4
p=p4;t=k4;sl=4;df=25;me=30000;eg=0.01;lr=0.001;
[w14,b14,w24,b24,ep,tr]=trainNN(p,t,sl,df,me,eg,lr);NNTWARN OFF;
save w14.mat w14;
save b14.mat b14;
save w24.mat w24;
save b24.mat b24;
%---------------------------------------------
%node 5
p=p5;t=k5;sl=2;df=25;me=30000;eg=0.01;lr=0.001;
[w15,b15,w25,b25,ep,tr]=trainNN(p,t,sl,df,me,eg,lr);NNTWARN OFF;
save w15.mat w15;
save b15.mat b15;
save w25.mat w25;
save b25.mat b25;
%产生测试集,对分类器进行测试
load w11.mat; load w12.mat;  load w14.mat;load w15.mat; %load w16.mat;
load b11.mat; load b12.mat;  load b14.mat;load b15.mat; %load b16.mat;
load w21.mat; load w22.mat;  load w24.mat;load w25.mat; %load w26.mat;
load b21.mat; load b22.mat;  load b24.mat;load b25.mat; %load b26.mat; 

snr_in_db=5;
N=50;
L=120;
rb=1000;
fc=12000;
df=rb;
result=zeros(9,9);p=zeros(1,5);
num=0;indx=0;

for i=1:10
    for k=1:9
        for j=1:20
%%----------------------------------------------------            
            x=modulator(rb,fc,snr_in_db,k,df,N,L);
            p=paracaculator2(x);
            disp(num);disp(k);
            a=simuff(p(1),w11,b11,'tansig',w21,b21,'logsig');
            [mx,indx]=max(a);
            switch indx
                case 1
                    a=simuff(p(2),w12,b12,'tansig',w22,b22,'logsig');
                    [mx,indx]=max(a);
                    switch indx
                        case 1
                            indx=1;
                        case 2
                            indx=4;
                    end
                case 2
                    indx=9;
                case 3
                    %a=simuff(p(3),w13,b13,'tansig',w23,b23,'logsig');
                    %[mx,indx]=max(a);
                    %switch indx
                    %case 1
                            a=simuff(p(4),w14,b14,'tansig',w24,b24,'logsig');
                            [mx,indx]=max(a);
                            switch indx
                                case 1
                                    indx=3;
                                case 2
                                    indx=6;
                                case 3
                                    indx=8;
                                case 4
                                    %end
                                    %case 2
                            a=simuff(p(5),w15,b15,'tansig',w25,b25,'logsig');
                            [mx,indx]=max(a);
                            switch indx
                                case 1
                                   indx=2;
                                case 2
                                   indx=7;
                            end
                    end
            end
            disp(indx);
            result(k,indx)=result(k,indx)+1;
            num=num+1;
%%-------------------------------------------------------------------------
        end
    end
end

result=(result/num*9)*100;
disp(snr_in_db);disp(result);
bar3(result);

⌨️ 快捷键说明

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