精华内容
下载资源
问答
  • 信道编码作业matlab.doc 信道编码 MATLAB 仿真作业 09274070 王若闻 思源 0903 1 现给出循环码卷积码的编解码程序,理解各程序,完成以下习题。将程序运行结果各 目 的解答写入 word 中: 运行结果如下 1.用 ...

    41528d3028836879cd698677c3999917.gif信道编码作业matlab.doc

    信道编码 MATLAB 仿真作业 09274070 王若闻 思源 0903 1 现给出循环码及卷积码的编解码程序,理解各程序,完成以下习题。将程序运行结果及各 目 的解答写入 word 中: 运行结果如下 1.用 matlab 运行书上习题中的“clockcode.m”(a)说明(7,4)码的纠错检错方法 答:接收码字与伴随矩阵相乘,计算得伴随矢量,伴随矢量不为 0 说明发生错误,为 0 说明无单个或两个错((7,4)码最多可检测两个错误) 。 伴随式不为 0 时,通过查表法进行译码,对于 Hamming 码,伴随式组成的二进制数即 为错码的位数。(b)在程序中标注“注释”处加上注释(英文或中文) Encode: temp=data1(4*i-3:4*i); %注释:将原始数据分成四个一组,每次循环调用其中一组cyctemp=temp*G; %注释:将原码与生成矩阵 G 相乘cyctemp=mod(cyctemp,2); %注释:每个数据模 2 encode(7*i-6:7*i)=cyctemp; %注释:7 位一组,进行编码 Decode: temp = x(7*j-6:7*j); % 注释:将分组码数据分成七个一组,每次循环调用其中一组 s=temp*Ht; % 注释:将分组码与伴随矩阵相乘生成伴随矢量 if(s == Ht(k,:)) % 注释:如果伴随矢量与伴随矩阵中的某一列相等 temp(k)=mod(temp(k)+1,2);%注释:分组数据纠错:分组数据中第 k 个数据加 1(模 2 加) decode(1,4*i-3:4*i)=decode1(1,7*i-6:7*i-3);%注释:分组码每组前 4 位写入解码输出数 据 Clockcode: data1=rand(1,nd)>0.5; %注释:生成 1000 个随机数数组,以 0.5 作为门限取 0 或 1 x=encode(data1); % 注释:对 data1 进行编码 data1=rand(1,nd)>0.5; % 注释:生成 1000 个随机数数组,以 0.5 作为门限取 0 或 1 x=encode(data1); % 注释:用之前声称的随机逻辑数组进行编码 sigma=E/sqrt(2*SNR); % 注释:计算未编码时高斯分布随机变量标准差,2 SNR 未信噪比 sigma1=E/sqrt(2*SNR*code_rate); % 注释: 计算编码后高斯分布随机变量标准差 if (data1(i)==0), data2(i)=-E+Gngauss(sigma); % 注释:传 0 码时加入高斯分布白噪声干扰,双极性码 else data2(i)=E+Gngauss(sigma); % 注释:传 1 码时加入高斯分布白噪声干扰,双极性码 if (x(i)==0), data3(i)=-E+Gngauss(sigma1); % 注释:编码后数据在双极性传输时加入高斯分布白噪 声干扰(空号) else data3(i)=E+Gngauss(sigma1); % 注释:编码后数据在双极性传输时加入高斯分布白噪 声干扰(传号) demodata1=data2 > 0; % 注释:双极性码硬判决 noe2=sum(abs(data1-demodata1)); % 错误的比特数 nod2=length(data1); % 注释:总码元数 ber(snr_num) = noe/nod; %注释:计算误比特率(c )对于编码和未编码的情况,误比特率为 1e-2 、1e-3 及 1e-4 时的 Eb/N0 分别是多少? BER 未编码 Eb/N0 编码后 Eb/N0 1e-2 4.28dB 4.53dB 1e-3 6.63dB 6.61dB 1e-4 8.17dB 7.94dB(d)从物理意义上说明编码增益问题 答:编码增益是编码信号相对于未编码信号效率的提高。单位为分贝。在编码理论和 相关的工程问题里,编码增益是一种度量,用来区别 SNR(信噪比)级别在未编码的 系统和编码的系统来达到相同的比特率( BER) ,应用在错误纠正编码( ECC) 。 编 码增益越高,纠错能力越强。 (e)当采用(15,11)码时,观察与(7,4)码相比编码增益的变化。(7,4)码 (15,11) 码 相同信噪比下, (15,11)码误比特率比(7,4)码低,编码增益增大3 2.针对题目 1 中的 clockcode.m(a)若信道使信号幅度呈瑞利衰落,画出编码与未编码的 Eb/N0--- 误比特率曲线,说明 与题目 1 观察结果的异同,并说明原因。未编码时信号幅度若成瑞利衰落,则误比特率会提高; 编码后则差别不大。(b)若信道使信号幅度呈莱斯衰落,画出编码与未编码的 Eb/N0--- 误比特率曲线,更改 K 值的大小,观察曲线的现象,能得出什么结论。K=0.3dB K=10dBK=30dB K=100dB 随着 K 值的增加,误比特率不断地提高,交点不断左移,说明在 K 值大的情况下,编 码的可靠性要比未编码的可靠性高的多。4 3.bpskh.m 为(2,1,7)卷积码采用硬判决译码时在 AWGN 中的误比特性能的仿真主程 序,用 matlab 运行主程序 bpskh.m ,将运行结果写入 word 文档中,并回答以下问题(tblen 为回溯长度): 运行结果为第一个图 (a)在标识注释处注释(中文或英文) trellis = poly2trellis(constlen, codegen); % 注释:卷积码多项式转换到网格形式 dspec = distspec(trellis, 7); % 注释:计算卷积码的距谱 expVitBER = bercoding(EbNo, conv , soft , codeRate, dspec); %注释:生成已编码的 AWGN 信道的误码率 rand( state , seed(1)); randn( state , seed(2)); %注释:将随机数生成器 rand 指定在 seed1 状态,randn 指定在 seed2 状态,这样每次生成的随机值都是一样的 msg_orig = randi([0 1], numSymb, 1); % 注释:生成 1e6 个二进制原始信息序 列 msg_enc = convenc(msg_orig, trellis); % 注释:对其进行卷积编码 hMod = modem.pskmod( M , M, PhaseOffset , 0, . SymbolOrder , Gray , Type , Bit ); % 注释:建立 PSK 调制模型 msg_tx = modulate(hMod, msg_enc); % 注释:发送端调制信号 msg_rx = awgn(msg_tx, EsN0-10*log10(1/codeRate)); % 注释:接收端在信号中添加高斯 白噪声 hDemod = modem.pskdemod( M , M, PhaseOffset , 0, .

    展开全文
  • 信道编码Matlab和FPGA的实现
  • 各种信道编码Matlab和FPGA的实现,包括MATLAB,FPGA工程完整代码
  • 用于无线通信的信道编码,用matlab编写的模块用于无线通信的信道编码,用matlab编写的模块用于无线通信的信道编码,用matlab编写的模块用于无线通信的信道编码,用matlab编写的模块
  • RS信道编码matlab

    千次阅读 2019-03-21 09:54:16
    %BPSK调制在AWGN信道下,RS码 clear all SNR=-10:10; N=30000; %消息比特个数 ber1=zeros(1,length(SNR)); n=7; k=5; T=1; %符号周期 fs=2; %每个符号的采样点数 % fc=2; ...

     

    %BPSK调制在AWGN信道下,RS码
    clear all
    
    SNR=-10:10;
    N=30000;      %消息比特个数
    ber1=zeros(1,length(SNR));
    
    n=7;
    k=5;
    T=1;                        %符号周期
    fs=2;                     %每个符号的采样点数
    % fc=2;                      %载波频率
    ts=1/fs;                    %采样时间间隔
    t=0:ts:T-ts;                %时间向量
    
    msg=randi([0,1],1,N);
    
    msg8=bi2ba(msg);%二进制转成八进制
    msg81=reshape(msg8,5,length(msg8)/5).'; %待转换的矩阵就生成了
    msgGF=gf(msg81,3);   
    msgrs=rsenc(msgGF,n,k); %(5,7)RS编码成功 7个输入 5个输出
    %msgrs的格式为length(msg8)/k行,n列
    msgrs1=reshape(msgrs.',1,length(msg8)/k*n); 
    msgrs2=de2bi(double(msgrs1.x),'left-msb');%十进制转二进制
    %msgrs2的格式为length(msg8)/k*n行,3列
    msgy=reshape(msgrs2',1,length(msg8)/k*n*3);%待调制信号
    
    
    x1=pskmod(msgy,2);
    
     for ii=1:length(SNR)
      
    y=awgn(x1,SNR(ii));    %高斯信道   
    y1=pskdemod(y,2);
        
    [hnum,lnum]=size(y1);
    yrsgs8=reshape(y1,3,hnum*lnum/3).';
    yrsgs81=bi2de(yrsgs8,'left-msb');     
    yrsgs81=reshape(yrsgs81,n,length(yrsgs81)/n).';
    ygsrsdec=rsdec(gf(yrsgs81,3),n,k); 
    d1=reshape(ygsrsdec.x',1,N/3); 
    d2=de2bi(d1,'left-msb').'; 
    ygs=reshape(d2,1,N);
    
    [num,ber1(ii)] = biterr(ygs, msg);
    disp(ber1);
    end
    figure(1)
    semilogy(SNR,ber1,'-ro') ;
    legend('高斯');
    title('RS码 2PSK AWGN')
    xlabel('信噪比(dB)')
    ylabel('误比特率')

     

     

    展开全文
  • 题目基于 MATLAB 的通信系统仿真 信道编码对通信系统性能的影响 专业 通信工程 姓名崔校通 ...摘要简述信道编码理论详细说明分组码的编译原理实现方法检错纠错能 力用 MATLAB 仿真有无信道编码条件下对通信系统性能
  • 信道编码matlab代码概述 此代码库向Matlab公开了C SDK。 通用部分包括: sdk类/包(请参阅adi.sdk)-这是直接与mex代码对接的Matlab代码 sdk_mex(请参阅+ adi / private目录)-这是调用ADInstruments dll的实际mex...
  • matlab对(7,4)循环码的误码率进行了仿真
  • 信息论Matlab信道编码

    2015-04-03 11:00:01
    matlab USTC 信息论 A 简单信道编码定理实现 channel coding 课程作业codes 课程作业codes 课程作业codes
  • 前向纠错码和卷积码都用于纠错,在 AWGN 环境中表现更好,如该程序所示
  • 基于MATLAB信道编码仿真课程设计

    热门讨论 2010-07-11 13:57:29
    简述信道编码理论,详细说明分组码的编译原理、实现方法检错纠错能力,用MATLAB仿真有无信道编码条件下对通信系统性能的影响及信道编码在不同信道下对通信系统性能的影响,如AWGN信道和深衰落信道。
  • 信息处理与编码结课大作业 学号 班级 姓名 成绩 香农编码的matlab语言实现 1问题背景 1949年香农在有噪声时的通信一文中提出了信道容量的概念和信道编码定理为信道编码奠定了理论基础无噪信道编码定理又称香农第一...
  • 基于matlab信道编码,循环码,界面设计简单介绍
  • 信道编码matlab代码Mic_Array 麦克风阵列板软件 C_DOA_BF:C代码通过USB音频从Mic阵列读取音频信号是否在Raspi3上进行了声源定位和超指向性波束成形测试 驱动程序:STM32F7xx的驱动程序:麦克风阵列板上的MCU For_...
  • #信道编码与交织 ##差错控制方式 在数字同通信控制系统中,利用纠错码或检错码进行差错控制的方式有三种:前向纠错、纠错重发、和混合纠错,它们的系统构成如下图所示: ###1、前向纠错控制方式 前向纠错方式(FEC...

    信道编码与交织

    差错控制方式

    \qquad 在数字同通信控制系统中,利用纠错码或检错码进行差错控制的方式有三种:前向纠错、纠错重发、和混合纠错,它们的系统构成如下图所示:
    差错控制方式

    1、前向纠错控制方式

    \qquad 前向纠错方式(FEC)是指发端信息经纠错编码后实现传送,接收端通过纠错编码通过纠错译码器不仅能够自动地发现错误,而且能够自动地纠正接受码传输中的错误。优点是不需要反馈信道,能进行一个用户对多个用户的同播通信,译码器实时性较好。缺点是译码设备比较复杂。应用领域:语音、图像处理,计算机存储系统、磁盘光盘、激光唱机等。

    2、检错重发控制方式

    \qquad 检错重发控制方式也称为反馈重发(ARQ)。发送端发出能够发现(检测)错误的码,接收端收到通过信道传来的码后,在译码器根据该码的编码规则,判决收到的码序列中有无错误产生,如果发现错误,则通过反向信道把判决结果反馈回发送端。优点是编译码设备简单,在同样冗余度下检错码的检错能力比纠错码的纠错能力要高得多。缺点是需要一条反馈信道来传输反馈信息,并要求发送和接收端装备有大容量的存储器以及复杂的控制设备。应用领域:计算机局域网、分组交换网、7号信令网等。

    3、混合纠错控制方式

    \qquad 混合纠错控制方式(HEC)是前向纠错(FEC)和反馈重发(ARQ)的结合,发送端发送的码元兼有检错和纠错的能力。优点:这种控制方式具有自动纠错和检错重发的优点,并可达到较低的误码率,应用领域也非常广泛。

    纠错码的分类

    1、线性码与非线性码

    \qquad 根据纠错码各码组信息和监督元的函数关系,可分为线性码和非线性码。如果函数关系为线性的,即满足一组线性方程式,则称为线性码,否则称为非线性码。

    2、分组码与卷积码

    \qquad 根据码组中监督码元与信息码元相互的关联的长度,可分为分组码和卷积码。分组码的各码元仅与本组的信息元有关;卷积码中的码元不仅与本组的信息码元相关,而且还与前面若干组的信息码元有关。
    \qquad 分组码把信息序列以k个码元分组,通过编码器将每组的k元信息按一定的规律产生r个多余码元(称为校验元或监督元)输出长为n=k+r的一个码字(码组)。分组码用(n,k)表示,n表示码长,k代表信息位的数目。
    \qquad 卷积码将信息序列以 k 0 k_0 k0个码元分段,通过编码器输出长为为 n 0 n_0 n0的一段码组。但是该码的 n 0 n_0 n0 - k 0 k_0 k0个校验元不仅与本段的信息源有关,而且也与其前m_0段的信息源有关,故卷积码用( n 0 n_0 n0 k 0 k_0 k0 m 0 m_0 m0)表示。

    3、检错码与纠错码

    \qquad 根据码的用途,可分为检错码和纠错码。检错码以检错为目的,不一定能纠错;而纠错码以纠错为目的,一定能检错。

    4、Hamming码、循环码、BCH码、RS码、CRC校验码

    \qquad Hamming码具有的共同特点是:
    \qquad \qquad \qquad (n,k)=( 2 m 2^m 2m-1, 2 m 2^m 2m-1-m)
    式中,m是大于等于3的正整数。
    \qquad MATLAB提供了生成Hamming码的函数hammgen,以及用Hamming码编码、解码的code和decode函数。
    \qquad 1、h = hammgen(m)
    \qquad h = hammgen(m)产生一个 m × n m\times n m×n的Hamming校验矩阵h,其中,n= 2 m 2^m 2m -1.
    \qquad 2、[h.g]=hammgen(m)
    \qquad [h.g]=hammgen(m)产生一个 m × n m\times n m×n的Hamming校验矩阵h和与h相对应的生成矩阵g。其中,n= 2 m 2^m 2m -1。h = [I P], I是一个 m × m m\times m m×m的单位矩阵。而g=[p I],其中,I是一个 ( n − m ) × ( n − m ) (n-m)\times (n-m) (nm)×(nm)的单位矩阵。

    Himming编码案例:
    1)仿真(7,4)Hamming码的编码及硬判决译码过程。
    2)仿真未编码和进行(7,4)Hamming码的编码的QPSK调制通过AWGN信道后的误比特性能比较。
    程序代码如下所示:

    %仿真(7,4)Hamming码的编码及硬判决译码过程
    clear all
    N = 10;          %信息比特行数
    n = 7;           %Hamming码组长度n=2^m-1
    m = 3;           %监督位长度
    [H,G] = hammgen(m);            %产生一个(n,n-m)Hamming码的校验矩阵和生成矩阵
    x = randi([0,1],N,n-m);        %产生比特数据
    y = mod(x*G,2);                %Hamming编码
    y1 = mod(y+randerr(N,n),2);    %在每一个编码码组中引入一个随机比特错误
    mat1 = eye(n);                 %生成n*n的单位矩阵,其中每一行的1代表错误比特位置
    errvec = mat1*H';              %校验结果对应的所有错误矢量
    y2 = mod(y1*H',2);             %译码
    %根据译码结果对应的错误矢量找出错误比特位置,并纠错
    for index = 1:N
        for index1 = 1:n
            if(y2(index,:) == errvec(index1,:))
                y1(index,:) = mod(y1(index,:)+mat1(index1,:),2);
            end
        end
    end
    x_dec = y1(:,m+1:end);         %恢复原始信息比特
    s = find(x ~= x_dec)           %纠错后的信息比特与原始信息比特对比
    
    %仿真未编码和进行(7,4)Hamming码的编码的QPSK调制通过AWGN信道后的误比特性能比较
    clear all
    N = 100000;               %信息比特行数
    M = 4;                    %QPSK调制
    n = 7;                    %Hamming编码码组长度
    m = 3;                    %Hamming码监督位长度
    graycode = [0,1,3,2];     %格雷编码规则
    
    msg = randi([0,1],N,n-m);      %信息比特序列
    msg1 = reshape(msg',log2(M),N*(n-m)/log2(M))';    %重塑信息比特序列
    msg1_de = bi2de(msg1,'left-msb');                 %信息比特序列转换位十进制形式
    msg1 = graycode(msg1_de+1);                       %格雷编码
    msg1 = pskmod(msg1,M);                            %4QPSK调制
    Eb1 = norm(msg1).^2/(N*(n-m));                    %计算比特能量
    msg2 = encode(msg,n,n-m,'hamming/binary');        %Himming编码
    msg2 = reshape(msg2',log2(M),N*n/log2(M))';       %重塑编码后序列
    msg2 = bi2de(msg2,'left-msb');                    %比特序列转换位十进制形式
    msg2 = graycode(msg2+1);                          %格雷编码
    msg2 = pskmod(msg2,M);                            %Himming编码数据进行4PSK调制
    Eb2 = norm(msg2).^2/(N*(n-m));                    %计算比特能量
    EbNo = 0:10;                                      %信噪比
    EbNo_lin = 10.^(EbNo/10);                         %转换为线性值
    for index = 1:length(EbNo)
        sigma1 = sqrt(Eb1/(2*EbNo_lin(index)));       %未编码的噪声标准差
        %加入高斯白噪声
        rx1 = msg1 + sigma1*(randn(1,length(msg1))+1i*randn(1,length(msg1)));    
        y1 = pskdemod(rx1,M);                         %未编码4PSK解调
        y1_de = graycode(y1+1);                       %未编码的格雷逆映射
        [err ber1(index)] = biterr(msg1_de',y1_de,log2(M));   %未编码的误比特率
        
        sigma2 = sqrt(Eb2/(2*EbNo_lin(index)));       %编码的噪声标准差
        %加入高斯白噪声
        rx2 = msg2 + sigma2*(randn(1,length(msg2))+1i*randn(1,length(msg2)));    
        y2 = pskdemod(rx2,M);                         %编码4PSK解调
        y2_de = graycode(y2+1);                       %编码的格雷逆映射
        y2_de = de2bi(y2_de,'left-msb');              %转换为二进制形式
        y2_de = reshape(y2_de',n,N)';                 %重塑矩阵
        y2_de = decode(y2_de,n,n-m,'hamming/binary'); %译码
        [err ber2(index)] = biterr(msg,y2_de);        %编码的误比特率
    end
    figure();
    semilogy(EbNo,ber1,'-ko',EbNo,ber2,'-k*');
    legend("未编码",'Hamming(7,4)编码的4PSK在AWGN下的性能');
    xlabel(EbNo);
    ylabel("误比特率");
    

    卷积码的编译码原理

    \qquad 卷积码又称为连环码,它和分组码有明显的区别。(n,k)线性分组码中,本组r = n-k个监督元仅与本组k个信息元有关,与其他各组无关,即分组码编码器本身是无记忆性的。卷积码则不同,每一个(n,k)码段(也称为子码,通常较短)内的n个码元不仅与该段内信息元有关,而且与前面的m段信息元也相关。通常称m为编码存储。卷积码常用符号(n,k,m)表示。
    \qquad 卷积码的编码器由移位寄存器、模二加法器以及开关电路组成。(2,1,2)卷积码的编码器如下图所示:
    (2,1,2)卷积码的编码器
    \qquad 起始状态,各级移位寄存器清零,即 S 1 S 2 S 3 S_1S_2S_3 S1S2S3为000。 S 1 S_1 S1等于当前输入数据,而移位寄存器状态 S 2 S 3 S_2S_3 S2S3存储以前的数据,输出码字C由下式决定,即:
    { C 1 = S 1 ⨁ S 2 ⨁ S 3 C 2 = S 1 ⨁ S 3 \left\{\begin{aligned}C_1&=S_1\bigoplus S_2\bigoplus S_3\\C_2&=S_1\bigoplus S_3\end{aligned}\right. C1C2=S1S2S3=S1S3
    \qquad 由于 C 1 C_1 C1对应的加法输入信号及寄存器 m 1 , m 2 m_1,m_2 m1,m2相连,因此,对应的二进制序列是111,对应的八进制序列是7, C 2 C_2 C2对应的加法器与输入信号及寄存器 m 2 m_2 m2相连,因此,对应的二进制序列为101,对应的八进制序列为5,因此,这个卷积编码器生成的多项式是[7 5]。
    \qquad 当输入数据D=[1 1 0 1 0]时,输出码字可以计算出来,具体计算过程参见下表,另外为了保证全部的数据通过寄存器,还必须在数据位后加3个0。

    S 1 S_1 S111010000
    S 2 S 3 S_2S_3 S2S30001111001100000
    C 1 C 2 C_1C_2 C1C21101010010110000
    状态ABDCBCAA

    \qquad 从上述的计算可知,每1位数据,影响m+1个输出子码。称m+1为编码约束度。每一个子码有n个码元,在卷积码中有约束关系的最大码长度则为(m+1)n,称为编码约束长度。(2,1,2)卷积码的编码约束度为3,约束长度为6。

    卷积码的编译码案例:
    仿真BPSK调制在AWGN信道下分别使用卷积码和未使用卷积码的性能对比,其中,卷积码的约束长度为7,生成多项式为[171,133],码率为1/2,译码分别采用硬判决译码和软判决译码。
    代码如下:

    clear all 
    EbNo = 1:10;             %信噪比范围
    N = 100000;              %信息比特个数
    M = 2;                   %BPSK调制
    L = 7;                   %约束长度
    trel = poly2trellis(L,[171,133]);         %卷积码生成多项式
    tblen = 6*L;                              %Viterbi译码器回溯深度
    msg = randi([0,1],1,N);                   %信息比特序列
    msg1 = convenc(msg,trel);                 %卷积编码
    x1 = pskmod(msg1,M);                      %BPSK调制
    for i = 1:length(EbNo)
        %加入高斯白噪声,因为码率为1/2,所以每一个符号的能量要比比特能量少3dB
        y = awgn(x1,EbNo(i)-3);
        y1 = pskdemod(y,M);                                   %硬判决
        y2 = vitdec(y1,trel,tblen,'cont','hard');             %Viterbi译码
        [err ber1(i)] = biterr(y2(tblen+1:end),msg(1:end-tblen)); %计算误比特率
        
        y3 = vitdec(real(y),trel,tblen,'cont','unquant');     %软判决
        [err ber2(i)] = biterr(y3(tblen+1:end),msg(1:end-tblen)); %计算误比特率
    end
    ber = berawgn(EbNo,'psk',2,'nodiff');                  %BPSK调制理论误比特率
    figure();
    semilogy(EbNo,ber,'-kd',EbNo,ber1,'-ko',EbNo,ber2,'-k*');
    legend("BPSK理论误比特率",'硬判决的误比特率','软判决的误比特率');
    xlabel('EbNo');
    ylabel("误比特率");
    
    展开全文
  • 信息论与信道编码(含MATLAB仿真)

    千次阅读 2020-06-12 04:06:29
    信道编码属于通信原理的范畴,它主要是通过对原始信号的设计,来提高接受方所收到信号的准确性。这是因为在传播的过程中,信号往往会受到来自空气的干扰(噪音),导致原信号发生畸形,如果没有一种强识别的方式,...

    前言

    这篇博文主要是想给这个系列的文章将会涉及到的学术知识一个大概的框架。信道编码属于通信原理的范畴,它主要是通过对原始信号的设计,来提高接受方所收到信号的准确性。这是因为在传播的过程中,信号往往会受到来自空气的干扰(噪音),导致原信号发生畸形,如果没有一种强识别的方式,往往会导致信号判决错误。这种为了降低信道所带来的的干扰的编码,因此被称为信道编码。
    而相对应的译码,其实就是把被设计过的原始信号给重新展现出来。不过有别单调的译码过程,如何通过译码来恢复我们已经畸形的原始信号,更是我们应该关注的。
    或许这么说有点单调,用图说话会有意思一点:
    在这里插入图片描述
    对于一种信道编码的纠错能力,它主要体现在信噪比和误码率之间的关系。在上图当中,x轴为信噪比而y轴为误码率。
    信噪比符号为Eb/N0,从符号可以看出定义,the power of a bit verse the power of noise。 一比特信号的功率与噪声的功率的比。这个定义非常重要,在后面求解BPSK的BER和SNR关系表达公式有关键作用哦。
    而误码率,是能够直接体现信道编码好坏的指标。误码率就是,最终判别错误的比特和已发送有用比特之比。这里特别强调了有用二字,会在后文特意基于解释。
    上图中主要展现了三种不同的情况,分别是:没有信道编码的BPSK信号,含有汉明码的BPSK信号,含有卷积码的BPSK信号。
    其中没有信道编码的BPSK信号的信噪比与误码率的曲线是起到一个参照的作用。而汉明码和卷积码都会与这条曲线做对比以及他们之间的相互对比来显现出他们的优劣。
    除此之外,因为这两种编码不仅仅有它们的仿真曲线,更为重要的还有前人(科学家们)通过计算得出来的理论曲线。这些理论曲线对于我们初学者来说尤其重要。一个是因为理论曲线可以告诉我们的实验结果是否为正确,而另一方面我们更应该尝试去了解前人是如何推导出这样一条理论上的曲线的,这样能够有助于我们能够知道在空气传播当中和译码当中到底发生了什么事情,信道编码是如何改进信号的质量。谈到这,不得不提起概率论。其实信息论和概率论密切关联,在之后的博文当中,都会尝试着用简单通俗的语言展示概率论分析问题的过程。

    除了概率论,还有对于白噪声,也会啰嗦的再介绍一下,因为白噪声遵循着高斯分布,所以说,之所以需要用概率论来分析问题,很大一部分原因还是因为噪声带来的影响是未知的,是随机的,不过又有一定的规律。

    目录

    1. 前言+为什么需要信道编码(即本文)
    2. 信息论与信道编码之BPSK误码率公式推导

    为什么需要信道编码,直接大功率的信噪比不就好了吗?

    先看看BPSK的信噪比曲线图:
    在这里插入图片描述
    在图中可以看到其实信噪比(x轴)和误码率(y轴)是呈类反比的一种趋势。深入思考一下,而噪音功率一定,信号幅度越大,在人眼看来,信号就越容易从噪声中提取出来,所以机器也是一样的。所以幅度差或者是功率差越大越容易辨别出原始信号。这一点跟模拟电路中将模拟信号通过放大器其实机理是差不多的。从图中可以推断当信噪比等于10或大于10的时候,其实误码率已经小的很可观了,接受到的信号几乎不会有问题。
    不过真的是这样的吗。在现实生活中,假如手机一直发这么大功率的信号,那么一天得充多少次电。对于一个客户来说,当然是追求一个电量消耗得比较慢的手机吧?除此之外,这也好像一个人在大街上喊,那么其他人还怎么可以互相聊天。所以功率太大,不利于同频信号的复用(详细内容建议看一下蜂窝网络哦,其实也不难)。
    所以科学家们为了解决这个问题,不停得寻找各种方案,终于从快递上找到了启发。信号就好比如快递需要的寄的物品,很多时候发送方为了这物品不要在中途被磕碰坏了,都会放点泡沫纸。加上泡沫纸就是信道编码,或者说是加上冗余。
    至于怎么添加呢,最开始有好几种办法。一种就是添加重复。例如我想要发送比特1,那么我就发送3个比特1。当接收方收到这三个比特时,假如其中一个比特被磕碰坏了那么我们还能从另外两个比特能知道原始信息。
    细心的朋友可能发现,这样速率不就变慢了吗,而且这冗余消耗的能量恐怕不比大功率信号的能量少吧。的确如此。不过这种初始的信道编码,大大的避免了大功率信号的影响范围,而且在旧社会里,因为原本收发速度就很慢的情况下,这种避免了错误的发生而重新发送的行为,已经是一种很大的进步了。
    不过随着科技的发展以及理论的完善,信道编码成为了一门课程,它的编码算法也是不断的得到提升的。

    展开全文
  • 信道编码matlab代码python-guided-filter (快速)Guided Filter的Numpy / Scipy实现。 改编自Kaiming的Matlab代码。 gf.py:guided_filter在一个或三个通道的引导图像(I)上运行过滤器,并在任意数量的通道上过滤...
  • 信道编码matlab代码spl18 通过矩阵完成的毫米波系统大规模MIMO信道估计 作者:Evangelos Vlachos上次修改时间:2020年4月 如果您在任何出版物中使用此代码或其任何部分(可能已修改),请引用该论文:E. Vlachos,GC...
  • 信道编码matlab代码大规模MIMO具有无限容量 这是与以下科学文章相关的代码包: EmilBjörnson,Jakob Hoydis,Luca Sanguinetti,“,” IEEE Transactions on Wireless Communications出现。 该软件包包含一个基于...
  • 信道编码matlab代码黎曼伪像子空间重建Matlab工具箱 该存储库包含EEGLAB [0]插件的代码,可用于使用Riemannian几何校正EEG工件。 该方法是Mullen等人发表的原始ASR方法的改编。 [1]。 有关其工作的详细信息,请参阅...
  • matlab通信原理仿真程序,用于初步了解信道编码与译码QAM,MSK
  • 信道编码matlab代码混音师 该存储库包含用于纠正具有共同内容的音频信号中的时序和通道失真的代码。 换句话说,它可以获取两个相关的音频文件,将它们及时对齐,并(近似)校正通道中的任何差异。 Python代码 该存储...
  • 信道编码matlab代码通过随机空间采样的混合波束成形毫米波系统的宽带MIMO信道估计 作者:Evangelos Vlachos上次修改时间:2019年10月 如果您在任何出版物中使用此代码或其任何部分(可能已修改),请引用以下文章:E...
  • 信道编码matlab代码使用条件GAN的一比特多用户大规模MIMO的信道估计 1.说明 该存储库是本文的实现:董玉迪,王华霞和姚玉东,“使用条件GAN进行一比特多用户大规模MIMO的信道估计”。 ArXiv:2006.11435 [Eess],...
  • matlab编码信道

    2009-04-25 14:42:29
    这是用于信道编码的一个程序,测试误码性能

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,577
精华内容 630
关键字:

信道编码及matlab实现

matlab 订阅