%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>初始化数据>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------clc,clear,close all;fs = 30000;Time_Hold_On = 0.1;Num_Unit = fs * Time_Hold_On;one_Level = zeros ( 1, Num_Unit );two_Level = ones ( 1, Num_Unit );three_Level = 2*ones ( 1, Num_Unit );four_Level = 3*ones ( 1, Num_Unit );A = 1; % the default ampilitude is 1 w1 = 300; %初始化载波频率w2 = 600;w3=900;w4=1200;%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>串并转换>>>>>>>>>>>>>>>%---------------------------------------------------Sign_Set=[0,0,1,1,0,1,1,0,1,0,1,0,1,0,0,1]Lenth_Of_Sign_Set = length ( Sign_Set ); %计算信号长度j=1;for I=1:2:Lenth_Of_Sign_Set %信号分离成两路信号Sign_Set1(j)= Sign_Set(I);Sign_Set2(j)=Sign_Set(I+1);j=j+1;endLenth_Of_Sign = length ( Sign_Set1 );st = zeros ( 1, Num_Unit * Lenth_Of_Sign/2 );sign_orign = zeros ( 1, Num_Unit * Lenth_Of_Sign/2 );sign_result = zeros ( 1, Num_Unit * Lenth_Of_Sign/2 );t = 0 : 1/fs : Time_Hold_On * Lenth_Of_Sign- 1/fs;%---------------------------------------------------%>>>>>>>>>>>产生基带信号>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Signif ((Sign_Set1(I) == 0)&(Sign_Set2(I) == 0)) %00为1电平sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = one_Level;elseif ((Sign_Set1(I) == 0)&(Sign_Set2(I) == 1)) %01为2电平sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = two_Level;elseif ((Sign_Set1(I) == 1)&(Sign_Set2(I) == 1)) %11为3电平sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = three_Level;else %10为4电平sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = four_Level;endend%---------------------------------------------------%>>>>>>>>>>>>>>>>>>产生频带信号>>>>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Signif ((Sign_Set1(I) == 0)&(Sign_Set2(I) == 0)) %00为载波w1 st((I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w1 * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) );elseif ((Sign_Set1(I) == 0)&(Sign_Set2(I) == 1)) %01为载波w2 st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w2 * t((I-1)*Num_Unit + 1 : I*Num_Unit ) );elseif ((Sign_Set1(I) == 1)&(Sign_Set2(I) == 1)) %11为载波w3 st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w3 * t((I-1)*Num_Unit + 1 : I*Num_Unit ) );else %10为载波w4 st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w4 * t( (I-1)*Num_Unit + 1 :I*Num_Unit ) );endend%---------------------------------------------------%>>>>>>>>>>>>>>>画初始信号图>>>>>>>>>>>>>>>>>%---------------------------------------------------figuresubplot ( 2, 1, 1 )plot ( t, sign_orign );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1),-A/2, 3*A+A/2] );title ( 'The original Signal' );grid;subplot ( 2, 1, 2 )plot ( t, st ); % the signal after modulationaxis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), -A, A ] );title ( 'the signal after modulation' );grid;%---------------------------------------------------%>>>>>>>>>>>>>>>带通滤波器>>>>>>>>>>>>>>%---------------------------------------------------%- design the bandpass [ 250 250 ]wp = [ 2*pi*250 2*pi*350 ]; %通带ws = [ 2*pi*50 2*pi*500 ]; %阻带[N,wn]=buttord(wp,ws,1,30,'s');[b,a]=butter( N,wn,'bandpass','s');[bz,az]=impinvar(b,a,fs); %映射为数字的dt1 = filter(bz,az,st); %带通取出频率w1figuresubplot( 2, 2, 1 )plot(t,dt1);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] ); title ( 'The element of 300 Hz' );wp = [ 2*pi*550 2*pi*650 ];ws = [ 2*pi*400 2*pi*800 ];[N,wn]=buttord(wp,ws,1,30,'s');[b,a]=butter( N,wn,'bandpass','s');[bz,az]=impinvar(b,a,fs);dt2 = filter(bz,az,st); %带通取出频率w2 subplot( 2, 2, 2 )plot(t,dt2);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] ); title ( 'The element of 600 Hz' );grid;wp = [ 2*pi*850 2*pi*950 ];ws = [ 2*pi*700 2*pi*1100 ];[N,wn]=buttord(wp,ws,1,30,'s');[b,a]=butter( N,wn,'bandpass','s');[bz,az]=impinvar(b,a,fs);dt3 = filter(bz,az,st); %带通取出频率w3subplot( 2, 2, 3 )plot(t,dt3);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] ); title ( 'The element of 900 Hz' );wp = [ 2*pi*1150 2*pi*1250 ];ws = [ 2*pi*1000 2*pi*1400 ];[N,wn]=buttord(wp,ws,1,30,'s');[b,a]=butter( N,wn,'bandpass','s');[bz,az]=impinvar(b,a,fs);dt4 = filter(bz,az,st);subplot( 2, 2, 4 )plot(t,dt4);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( 'The element of 1200 Hz' );%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>相干解调>>>>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------dt1 = dt1 .* cos ( 2 * pi * w1 * t ); %解调载波1dt2 = dt2 .* cos ( 2 * pi * w2 * t ); %解调载波2dt3 = dt3 .* cos ( 2 * pi * w3 * t ); %解调载波3dt4 = dt4 .* cos ( 2 * pi * w4 * t ); %解调载波4figuresubplot( 2, 2, 1 )plot(t,dt1);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '300Hz分量相干解调后的波形' );gridsubplot( 2, 2, 2 )plot(t,dt2);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '600Hz分量相干解调后的波形' );grid;subplot( 2, 2, 3 )plot(t,dt3);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '900Hz分量相干解调后的波形' );gridsubplot( 2, 2, 4 )plot(t,dt4);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '1200Hz分量相干解调后的波形' );grid%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>低通滤波器>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------[N,Wn] = buttord( 2*pi*50, 2*pi*150,3,25,'s'); %临界频率采用角频率表示[b,a]=butter(N,Wn,'s');[bz,az]=impinvar(b,a,fs); %映射为数字的dt1 = filter(bz,az,dt1);dt2 = filter(bz,az,dt2);dt3 = filter(bz,az,dt3);dt4 = filter(bz,az,dt4);figuresubplot( 2, 2, 1 )plot(t,dt1);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '300Hz分量低通滤波后的波形' );gridsubplot( 2, 2, 2 )plot(t,dt2);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '600Hz分量低通滤波后的波形' );grid;subplot( 2, 2, 3 )plot(t,dt3);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '900Hz分量低通滤波后的波形' );gridsubplot( 2, 2, 4 )plot(t,dt4);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) ] );title ( '1200Hz分量低通滤波后的波形' );grid%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>抽样判决>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Signif (dt1((2*I-1)*Num_Unit/2) > dt2((2*I-1)*Num_Unit/2))&&(dt1((2*I-1)*Num_Unit/2) > dt3((2*I-1)*Num_Unit/2))&&(dt1((2*I-1)*Num_Unit/2) > dt4((2*I-1)*Num_Unit/2)) sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = one_Level;a(I)=0,b(I)=0;elseif (dt2((2*I-1)*Num_Unit/2) >dt1((2*I-1)*Num_Unit/2))&&(dt2((2*I-1)*Num_Unit/2) >dt3((2*I-1)*Num_Unit/2))&&(dt2((2*I-1)*Num_Unit/2) > dt4((2*I-1)*Num_Unit/2)) sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = two_Level;a(I)=0,b(I)=1;elseif (dt3((2*I-1)*Num_Unit/2) >dt1((2*I-1)*Num_Unit/2))&&(dt3((2*I-1)*Num_Unit/2) >dt2((2*I-1)*Num_Unit/2))&&(dt3((2*I-1)*Num_Unit/2) > dt4((2*I-1)*Num_Unit/2)) sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) =three_Level;a(I)=1,b(I)=1;elsesign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) =four_Level;a(I)=1,b(I)=0;endendfigureplot ( t, sign_result );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 1), -A/2, 3*A+A/2 ] ); title ( '解调出来的波形' );grid%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>并串转换>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------signdemo=[];for I=1:Lenth_Of_Signsigndemo=[signdemo,a(I),b(I)]end。