基于MATLAB的数字通信系统仿真设计

通信原理大作业–基于MATLAB的数字通信系统仿真设计

本次大作业实验代码为初学matlab所编写,有不规范之处多多见谅呀,有什么问题可以积极评论区询问,不定时解答噢
互相进步,我也是个小菜鸡


% 数字通信系统仿真,主要模块:信源、信源编码、信道编码,调制;信道;解调制、信道译码、信源译码、信宿;
% (1)信源:产生一个模拟信号或数字信号 --正弦信号
% (2)信源编码:任何一种压缩编码 --PCM-脉冲编码调制方式
% (3)信道编码:任何一种纠错码(奇偶校验,分组码,等); --线性分组码
% (4)调制: 任何一种调制(2ASK,2PSK,等); --2PSK-二进制相移键控法
% (5)信道:任何一种信道(理想,高斯,等); --高斯白噪声模拟信道噪声
% (6)解调制:解调(4); --相干解调法
% (7)信道译码:译(3); --错码率
% (8)信源译码:译(2)
% (9)信宿:得到一个一个模拟信号或数字信号,即:返原(1)

main-主函数

工程的主体代码,清晰可见的区分编码过程
其中信源的产生为了方便直接使用已经抽样了的正弦信号
% (1)信源:产生一个模拟信号或数字信号			
    %相当于信源编码里的抽样
    
    t=0:2*pi/399:2*pi;   %1个周期-400个点
    x=sin(2*t);          %2个周期,一个200点
    len=length(t);          %400
% (2)信源编码:任何一种压缩编码
    socode=Sourcecode(t,x);  %len-400行-8列
% (3)信道编码:任何一种纠错码(奇偶校验,分组码,等);  --线性分组码
    chcode=Channelcode(t,socode); %len-400行-12列 

% % (4)-(6)调制与解调
%     %2PSK+高斯白噪声模拟信道噪声+相干解调法
    code=Moanddemodulation1(t,chcode,len);  

% (7)信道译码:译(3); --错码率   
    chdecode=Channeldecode(t,code,len);
% (8)信源译码:译(2)
    desocoding=Sourcedecode(t,chdecode);  

1. 信源编码(Sourcecode)

对信源信号进行量化-编码处理,得到8位信源编码

信源编码过程图
数字化过程

function z=Sourcecode(t,x)  %信源编码
    
    %2.量化
    A=87.6;
    y=quantificat(x,A);
    %3.编码
    z=a_pcm(y);

    figure(1)  
    subplot(4,1,1);plot(t,x);
    axis([0 2*pi -1.2 1.2]);
    xlabel('时间');ylabel('幅度');title('原始信号');
    
    subplot(4,1,2);plot(t,y)
    axis([0 2*pi -1.2 1.2]);
    xlabel('时间');ylabel('幅度');title('A律量化后的信号');
    
    figure(2) 
    subplot(2,1,1);
    stem(x);
    xlabel('抽样数');ylabel('幅度');title('抽样信号');
    
    subplot(2,1,2);
    stem(y);
    xlabel('抽样数');ylabel('幅度');title('量化电平');
    
    
end
        

1.1 量化-A率13折线(quantificat)

使用非均匀量化,非均匀量化的实现方法通常在进行量化之前,先将信号抽样值压缩,再进行均匀量化.
使用A压缩率,根据书上公式取A=87.6,x为抽样信号得到量化电平y

A压缩率量化公式
A律13折线图

function y=quantificat(x,A)  %量化
        a=1/A;  %0.0114
        for i=1:length(x)
            if x(i)>=0
                if(x(i)<=a)
                    y(i)=(A*x(i))/(1+log(A));
                else
                    y(i)=(1+log(A*x(i)))/(1+log(A));
                end
            else
                if(x(i)>=-a)
                    y(i)=-(A*-x(i))/( 1+log(A));
                else
                    y(i)=-(1+log(A*-x(i)))/(1+log(A));
                end
            end
        end
    end

1.2 编码-4位码字16份(a_pcm)

采用脉冲编码调制法,二进制码选择折叠二进制码

折叠二进制码
在A律13折线 PCM编码中,共计:
数量级
需将每个样值脉冲(Is )编成 8位 二进制码:
调制编码
极性码:表示样值的极性。正编“1”,负编“0”
段落码:表示样值的幅度所处的段落
段内码:16种可能状态对应代表各段内的16个量化级

根据序号分配图编码
编码图

function z=a_pcm(y)  %编码

    paragraphcode(y);       %极性-段落码
    pieceofcode(y);         %段内码
    
    function paragraphcode(y)
       for i=1:length(y)
           I=y(i)*2048;   %转换为量化单位
            %>--1,<--0
            if I>0
                z(i,1)=1;   %极性码-正-1
            else
                z(i,1)=0;   %极性码-负-0
                I=-I;
            end
            if I>128
                z(i,2)=1;  
                if I>512
                    z(i,3)=1;  
                    
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值