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

📄 pushbutton4.asv

📁 在matlab下输入guide命令后打开main_main.gig 实现卷积编码
💻 ASV
字号:
ss4_1=[1 1 1];
ss4_2=[1 0 1];
s4_1=conv(s3,ss4_1);
s4_2=conv(s3,ss4_2);

s4=[s4_1;s4_2];
s4=reshape(s4,1,length(s4_1)+length(s4_2));
s4=mod(s4,2);
s4=s4(1:2*length(s3));

% if length(s4)>20,
%     ss4=s4(1:21);
%     ss4=num2str(ss4);
%     msgbox(ss4,'卷积编码结果:(前20个)')
% else
%     ss4=num2str(s4);
%     msgbox(ss4,'卷积编码结果:')
% end
nnn=1:M;
figure(4)
 set(4,'Position',[10,50,500,200])
stem(nnn,s4);
axis([0,40,-1,1]);	
grid;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%本程序中时间单位是微秒
%频率单位为MHz
%码速率单位是Mb/s

 global dt t f df N T
% close all
% clear Eb_N0 Pe

% N=2^13; %采样点数
L=32;    %每码元的采样点数
N=L*M;
% M=N/L   %码元数
Rb=2;		%码速率是2Mb/s
Tb=1/Rb;        %码元间隔
Ts=4/Rb;        %每一支路码元间隔
dt=Tb/L;        %时域采样间隔
df=1/(N*dt)     %频域采样间隔
T=N*dt          %截短时间
Bs=N*df/2       %系统带宽
alpha=0.5 	    %滚降系数
fc=10*Rb;       %载波频率

t=[-T/2+dt/2:dt:T/2];  %每一支路时域横坐标
f=[-Bs+df/2:df:Bs];    %每一支路频域横坐标

%升余弦
hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
HR=abs(t2f(hr));%取模是为了忽略时延
GT=sqrt(HR);
GR=GT;

%信号分成两路,然后变成4电平,然后产生冲激序列
% a=round(rand(1,M));
s5=zeros(1,M/2); %串并变换
s6=zeros(1,M/2);
s7=zeros(1,M/4); %数摸变换
s8=zeros(1,M/4);
for i=1:M/2,         %%第1路
    s5(i)=s4(2*i-1);    
end
for k=1:M/4
    if (s5(2*k-1)==0)&(s5(2*k)==0),   %数摸变换
        s7(k)=-3;
     elseif (s5(2*k-1)==0)&(s5(2*k)==1),
         s7(k)=-1;
    elseif (s5(2*k-1)==1)&(s5(2*k)==1),
        s7(k)=1;
    else 
%         (s5(2*k-1)==1)&(s5(2*k)==0),
        s7(k)=3;
    end
end
imp1=zeros(1,N);    %产生冲激序列
imp1(2*L:4*L:N)=s7/dt;
IMP1=t2f(imp1);

%%第二路
for j=1:M/2,
    s6(j)=s4(2*j);
    %         m=2i-1;    
end

for m=1:M/4
    if (s6(2*m-1)==0)&(s6(2*m)==0),   %数摸变换
        s8(m)=-3;
    elseif (s6(2*m-1)==0)&(s6(2*m)==1),
        s8(m)=-1;
    elseif (s6(2*m-1)==1)&(s6(2*m)==1),
        s8(m)=1;
    else 
%         (s6(2*m-1)==1)&(s6(2*m)==0),
        s8(m)=3;
    end
end
imp2=zeros(1,N);    %产生冲激序列
imp2(2*L:4*L:N)=s8/dt;
IMP2=t2f(imp2);


s9=real(f2t(IMP1.*GT));
s10=real(f2t(IMP2.*GT));
s11=s9.*(sqrt(2)*cos(2*pi*fc*t));
s12=-s10.*(sqrt(2)*sin(2*pi*fc*t));
s13=s11+s12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%进入信道%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%调制完成%%%%%%%%%%%%%%%%%%%


    Eb_N0=800 %Eb/N0 in dB
    eb_n0=10^(Eb_N0/10);
    Eb=1;	
    n0=Eb/eb_n0; %信道的噪声谱密度   
    sita=n0*Bs; %信道中噪声功率
n_ch=sqrt(sita)*randn(size(t)); %信道噪声
s14=n_ch;
% s15=s13+n_ch;
s15=s13;
s16=s15.*(sqrt(2)*cos(2*pi*fc*t));
s17=-s15.*(sqrt(2)*sin(2*pi*fc*t));
       s18=real(f2t(t2f(s16).*GR));   %解调信号1
       s19=real(f2t(t2f(s17).*GR));   %解调信号2
       s1818=s18(2*L:4*L:N);		  %取样1
        s1919=s19(2*L:4*L:N);		  %取样2
        
        
        %%%%%%%%%%%判决%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        s20=zeros(1,M/2); %判决结果
       s21=zeros(1,M/2);
        for ii=1:M/4
            if  s1818(ii)>=2       %判决1
                s20(2*ii-1)=1; s20(2*ii)=0;
            elseif s1818(ii)>0
                s20(2*ii-1)=1;  s20(2*ii)=1;
            elseif s1818(ii)>-2
                s20(2*ii-1)=0;  s20(2*ii)=1;
            else
                s20(2*ii-1)=0; s20(2*ii)=0;
            end
        end
        
        for jj=1:M/4
            if s1919(jj)>=2       %判决2
                s21(2*jj-1)=1;   s21(2*jj)=0;
            elseif s1919(jj)<2&s1919>=0
                s21(2*jj-1)=1;    s21(2*jj)=1;
            elseif s1919(jj)<0&s1919>=-2
                s21(2*jj-1)=0;   s21(2*jj)=1;
            else
                s21(2*jj-1)=0;  s21(2*jj)=0;
            end
        end    
        
        s22=zeros(1,M);%并串变换
        for n=1:2:M-1
            s22(n)=s20((n+1)/2);
            s22(n+1)=s21((n+1)/2);
        end














⌨️ 快捷键说明

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