精华内容
下载资源
问答
  • (1)首先生成一个随机且长度为10000的二...(7)利用MATLAB中的qamdemod函数生成解调器对16QAM信号的解调,并将十六进制信号转化成二进制比特流信息。 (8)用得到比特流信息除以原始发送的比特流信息来计算误码率。
  • QAM调制解调matlab

    2010-03-09 18:50:41
    QAM调制解调matlab程序,有实际的语音仿真例程。
  • 4096阶QAM调制解调 matlab仿真
  • matlab16QAM调制与解调

    2013-07-04 10:02:37
    一个matlab写的16QAM调制与解调程序
  • 基于MATLAB QAM调制与解调仿真,带gui界面。
  • matlab程序,方形,星形16QAM解调,其中包含眼图展示,星座图展示,测试matlab2014可完美运行,史上最全的16QAM matlab代码
  • 基于MATLABQAM调制与解调系统设计

    千次阅读 2020-02-06 20:27:02
    源码:https://download.csdn.net/download/weixin_38719187/12135716 课题介绍:基于MATLABQAM调制与解调系统设计 运行截图:

    源码:
    同类课题下载,点击这里
    [同类课题]
    课题介绍:基于MATLAB的QAM调制与解调系统设计
    运行截图:
    GUI界面

    展开全文
  • % 完成16QAM信号的调制解调;% 基带信号符号速率 ps =1Mbps;% 成形滤波器的滚降因子 a=0.8;% 载波信号频率fc=2MHz ;% 采样频率 Fs=8MHz ;% 绘制16QAM信号的频谱及时域波形;% 采用相干解调法仿真其解调过程;% ...
  • 基于 MATLABQAM 调制解调技术分析 基于MATLABQAM调制解调技术分析 摘要当今频谱资源很大一部分已经被利用随着用户数量的不断增加对业务需求量 不断地提高在所剩无几的频谱资源如何才能够承载用户的需求 QAM凭借...
  • 64QAM调制解调

    2015-05-13 20:58:11
    可以设置32,64QAM调制解调代码,MATLAB
  • 基于MATLABQAM调制解调技术分析 基于MATLABQAM调制解调技术分析 摘要当今频谱资源很大一部分已经被利用随着用户数量的不断增加对业务需求量不断地提高在所剩无几的频谱资源如何才能够承载用户的需求QAM凭借着...
  • MATLAB QAM调制与解调仿真带GUI界面。
  • 16QAM调制与解调-MATLAB基带仿真

    万次阅读 多人点赞 2020-01-22 17:16:52
    本篇文章介绍16QAM调制基本原理,通过MATLAB对16QAM系统性能进行基带仿真。

    16QAM调制与解调-MATLAB基带仿真

    ---------------------------- 2020.05.14更新:----------------------------------
    有几位小伙伴在评论区与私信想要高维M-QAM的代码,更新文章供大家参考:
    高维M-QAM调制与解调-MATLAB基带仿真

    仿真步骤

    1. 产生一定长度的值为0或1的随机序列 s ( t ) s(t) s(t)
    2. s ( t ) s(t) s(t)映射到16QAM星座图上的星座点。
    3. 产生高斯白噪声,将调制后的信号通过AWGN信道,得到输出信号 r ( t ) r(t) r(t)
    4. 利用最小距离判决准则实现检测,统计误比特数。
    5. 绘制仿真误符号率与理论误符号率曲线,进行对比分析。

    16QAM发送端星座图:
    在这里插入图片描述
    注意:
    在仿真中,需要考虑发送信号能量的归一化。
    这里提供一种思路

    EbN0_dB = 0:14;                         % Eb/N0 dB形式
    EbN0 = 10.^(EbN0_dB/10);                % 每比特能量/噪声
    EsN0 = log2(M) * EbN0;                  % 每符号能量/噪声
    send_set = [-3+3j,-1+3j,1+3j,3+3j,...
                -3+1j,-1+1j,1+1j,3+1j,...
                -3-1j,-1-1j,1-1j,3-1j,...
                -3-3j,-1-3j,1-3j,3-3j];     % 发射端星座点
    Es_avg = sum(abs(send_set).^2) / length(send_set);
    N0 = Es_avg ./ EsN0;
    

    也就是这里面的Es_avg,计算了发送信号的平均能量。

    16QAM相干解调

    最小距离判决准则:

    s ^ ( t ) = arg ⁡ min ⁡ 1 ≤ m ≤ M ∥ r ( t ) − s m ( t ) ∥ 2 2 \hat{s}(t)=\underset{1 \leq m \leq M}{\arg \min}{\|r(t)-s_m(t)\|_2^{2}} s^(t)=1mMargminr(t)sm(t)22

    理论误符号率:

    P e = 3 Q ( 4 5 E b N 0 ) [ 1 − 3 4 Q ( 4 5 E b N 0 ) ] P_e=3 Q(\sqrt{\frac{4}{5} \frac{\mathcal{E}_{\mathrm{b}}}{N_{0}}})\left[1-\frac{3}{4} Q(\sqrt{\frac{4}{5} \frac{\mathcal{E}_{\mathrm{b}}}{N_{0}}})\right] Pe=3Q(54N0Eb )[143Q(54N0Eb )]

    仿真结果
    在这里插入图片描述
    MATLAB基带仿真程序

    clc
    clear
    close all
    % Title:  16QAM调制与解调 %
    % Data:   2020.01.22 %
    % Author: K.X.Song % 
    M = 16;                                 % 调制阶数
    L_data = 1000000;                       % 数据长度
    L_symbol = L_data/log2(M);              % 符号长度
    data = round(rand(1,L_data));           % 原始数据
    EbN0_dB = 0:14;                         % Eb/N0 dB形式
    EbN0 = 10.^(EbN0_dB/10);                % 每比特能量/噪声
    EsN0 = log2(M) * EbN0;                  % 每符号能量/噪声
    error = zeros(1,length(EbN0_dB));       % 预置错误符号个数
    ser = zeros(1,length(EbN0_dB));         % 预置仿真误符号率
    tser_BPSK = zeros(1,length(EbN0_dB));   % 预置BPSK理论误符号率
    tser_QPSK = zeros(1,length(EbN0_dB));   % 预置QPSK理论误符号率
    tser_16QAM = zeros(1,length(EbN0_dB));  % 预置16QAM理论误符号率
    % 16QAM调制
    send = zeros(1,L_symbol);               % 预设发送信号
    send_set = [-3+3j,-1+3j,1+3j,3+3j,...
                -3+1j,-1+1j,1+1j,3+1j,...
                -3-1j,-1-1j,1-1j,3-1j,...
                -3-3j,-1-3j,1-3j,3-3j];     % 发射端星座点
    Es_avg = sum(abs(send_set).^2) / length(send_set);
    N0 = Es_avg ./ EsN0;
    for q = 1:L_symbol
        if (data(4*q-3:4*q) == [1,0,1,1])
            send(q) = send_set(1);          % 1001 => -3+3j
        elseif (data(4*q-3:4*q) == [1,0,0,1])
            send(q) = send_set(2);          % 1001 => -1+3j
        elseif (data(4*q-3:4*q) == [1,1,1,0])
            send(q) = send_set(3);          % 1110 => +1+3j
        elseif (data(4*q-3:4*q) == [1,1,1,1])
            send(q) = send_set(4);          % 1111 => +3+3j
        elseif (data(4*q-3:4*q) == [1,0,1,0])
            send(q) = send_set(5);          % 1010 => -3+1j
        elseif (data(4*q-3:4*q) == [1,0,0,0])
            send(q) = send_set(6);          % 1000 => -1+1j
        elseif (data(4*q-3:4*q) == [1,1,0,0])
            send(q) = send_set(7);          % 1100 => +1+1j
        elseif (data(4*q-3:4*q) == [1,1,0,1])
            send(q) = send_set(8);          % 1101 => +3+1j
        elseif (data(4*q-3:4*q) == [0,0,0,1])
            send(q) = send_set(9);          % 0001 => -3-1j
        elseif (data(4*q-3:4*q) == [0,0,0,0])
            send(q) = send_set(10);         % 0000 => -1-1j
        elseif (data(4*q-3:4*q) == [0,1,0,0])
            send(q) = send_set(11);         % 0100 => +1-1j
        elseif (data(4*q-3:4*q) == [0,1,1,0])
            send(q) = send_set(12);         % 0110 => +3-1j
        elseif (data(4*q-3:4*q) == [0,0,1,1])
            send(q) = send_set(13);         % 0011 => -3-3j
        elseif (data(4*q-3:4*q) == [0,0,1,0])
            send(q) = send_set(14);         % 0010 => -1-3j
        elseif (data(4*q-3:4*q) == [0,1,0,1])
            send(q) = send_set(15);         % 0101 => +1-3j
        else
            send(q) = send_set(16);         % 0111 => +3-3j
        end
    end
    for q = 1:length(EbN0_dB)
        noise = sqrt(N0(q)/2)*randn(1,L_symbol) + 1j*sqrt(N0(q)/2)*randn(1,L_symbol);   % AWGN
        receive = (send + noise);       % 接收信号
        detect = zeros(1,L_symbol);         % 预置检测信号
        distance = zeros(1,M);              % 解调:距离检测 
        for t = 1:L_symbol
            for w = 1:M
                distance(w) = norm(receive(t) - send_set(w))^2;     % 接收信号到所有星座点的距离
            end
            pos = find(distance == min(distance));      % 最小距离星座点的位置
            detect(t) = send_set(pos);                  % 解调后的符号
            if (detect(t) ~= send(t)) 
                error(q) = error(q) + 1;                % 统计错误符号数
            end
        end
        ser(q) = error(q)/L_symbol;                     % 16QAM仿真误符号率
        tser_BPSK(q) = qfunc(sqrt(2*EbN0(q)));          % BPSK理论误比特率
        tser_QPSK(q) = 2*qfunc(sqrt(2*EbN0(q)))*(1-qfunc(sqrt(2*EbN0(q)))/2);            % QPSK理论误符号率
        tser_16QAM(q) = 3*qfunc(sqrt(4/5*EbN0(q)))*(1-3/4*qfunc(sqrt(4/5*EbN0(q))));   % 16QAM理论误符号率
    end
    figure
    semilogy(EbN0_dB,ser,'o',EbN0_dB,tser_BPSK,'k',EbN0_dB,tser_QPSK,'r',EbN0_dB,tser_16QAM,'b');     % 画图
    grid on;                                        % 坐标轴开启
    axis([0 14 10^-5 10^-1])                        % 限制作图范围
    xlabel('Eb/N0 (dB)');                           % 横坐标
    ylabel('SER');                                  % 纵坐标
    legend('16QAM仿真误符号率','BPSK理论误符号率','QPSK理论误符号率','16QAM理论误符号率');   % 图例
    
    
    展开全文
  • matlab实现16QAM调制解调

    千次阅读 多人点赞 2020-07-04 16:10:41
    用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相比较。 二、设计 1.调制 (1)首先,一串二进制序列进入串/并变换中,进行4比特划分后再进行2比特划分成一组,按照奇数送同相路,偶数...

    一、要求

    用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相比较。

    二、设计

    1.调制

    (1)首先,一串二进制序列进入串/并变换中,进行4比特划分后再进行2比特划分成一组,按照奇数送同相路,偶数送入正交路。

    (2)进入2/L电平变换,就是说二进制数变成4个十进制数,而4个十进制数是由自己的星座图设定的,即00,01,11,10分别对应于-3,-1,1,3。

    (3)送入低通后滤除较小的抖动波。

    (4)进入相乘器,载波cosωct与同相路波SI(t)相乘变为SI(t) cosωct, 载波cosωct经过相位移动90°与正交路波SQ(t)相乘变为-SQ(t) sinωct。

    (5)两路波形经过相乘器后,进行相加,变为SI(t)cosωct- SQ(t)sinωct。
    在这里插入图片描述
    2.解调

    (1)经过调制后的波形再分别与相乘器相乘,通过载波cosωct和载波cosωct经过相位移动90°后各自提取出同相分量和正交分量。

    (2)进入低通形成包络波形。

    (3)再进入采样判决器,选取采样点形成原始的二进制矩形波形。

    (4)最后进入并/串变换,按照原先的奇偶原则形成完成的原始二进制信号。
    在这里插入图片描述

    三、代码

    clear all;clc;
    nsymbol= 100000;
    M=16;
    graycode=[0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 ];
    %graycode=[0:32]
    EsN0=5:20;
    snr1=10.^(EsN0/10);
    msg=randi([0,M-1],1,nsymbol);
    msg1=graycode(msg+1);
    msgmod=qammod(msg1,M);
    scatterplot(msgmod);
    spow=norm(msgmod).^ 2/nsymbol; 
    for i=1:length(EsN0)
        sigma=sqrt(spow/(2*snr1(i)));
        rx=msgmod+sigma*(randn(1,length(msgmod))+1i*randn(1,length(msgmod)));
        y=qamdemod(rx,M);
        decmsg=graycode(y+1);
        [err1,ber(i)]= biterr(msg,decmsg,log2(M));
        [err2,ser(i)]=symerr(msg,decmsg);
    end
    p4=2*(1-1/sqrt(M))*qfunc(sqrt(3*snr1/(M-1)));
    ser1=1-(1-p4).^2;
    ber1=1/log2(M)*ser1;
    figure()
    semilogy(EsN0,ber,'o',EsN0,ser,'*' ,EsN0,ser1, EsN0,ber1,'-');
    title('64QAM-AWGN')
    xlabel('Es/N0');ylabel('SER AND BER');
    legend('ber simulation' ,'ser simulation','ser theory' ,'ber theory');
    
    
    

    四、结果

    16QAM
    在这里插入图片描述
    在这里插入图片描述
    32QAM
    在这里插入图片描述
    在这里插入图片描述
    64QAM
    在这里插入图片描述
    在这里插入图片描述

    五、结论

    由上图可知,随着信噪比的增加,误码率和误比特率越来越小。随着信噪比的增加,误比特率越来越接近理论值,而误码率几乎一直与理论值相匹配。QAM的阶数越高误码率与误比特率也就越大。而且阶数越高初始时的误比特率偏离理论值越大。

    展开全文
  • 64QAMmatlab调制代码

    2020-02-17 21:02:33
    64QAMmatlab调制代码,包括产生基带信号、映射、插值滤波、调制乘载波、过高斯白噪声信道,还有画星座图,并将调制信号的调制信息转化为幅-相二维图
  • BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现

    万次阅读 多人点赞 2019-05-29 15:04:32
    4、QAM 相位状态表 表 1.1 BPSK相位状态表 Data bit Phase change 0 0 1 BPSK在AWGN信道中能够获得最好的误码率性能,频谱效率:1bps/Hz. 调制代码实现: function [mod_symbol] = bpskmod...

    1、BPSK

    目录

    1、BPSK

    2、QPSK

    3、MPSK

    4、QAM


    相位状态表

    表 1.1 BPSK相位状态表
    Data bitPhase change
    00
    1\pi

    BPSK在AWGN信道中能够获得最好的误码率性能,频谱效率:1bps/Hz.

    调制代码实现:

    function [mod_symbol] = bpskmod(bit_in)
    
    % bit_in = [0,1,0,0,1,1,1]; % only for test
    len = length(bit_in);
    
    table = exp(j*[0, pi]);
    
    mod_symbol = table(bit_in+1); %complex number
    %% method 2
    % mod_symbol = 2*bit_in -1;
    
    

    解调时直接判断实部数据正负即可。

    2、QPSK

    表 2.1 QPSK相位状态表
    Data bits (a(t)-b(t))\phi (t)
    0-0-3\pi/4
    0-13\pi/4
    1-0-\pi/4
    1-1\pi​​​​​​​/4

    QPSK频带效率:2bps/Hz。横穿或接近原点的相位轨迹,会增加峰平比(PAR),引起频谱增生,即带外辐射。

    调制代码:

    function qpskSym = qpskmod(bit_in)
    
    % bit_in = randi([0,1], 1 ,10); % test data
    
    len = length(bit_in);
    % mapping (11,01 ,00, 10)
    % 1/4*pi , 3/4*pi ,-3/4*pi, -1/4*pi
    table= exp(j*[-3/4*pi,3/4*pi , -1/4*pi, 1/4*pi ]); % 0,1,2,3
    
    inMatrix = reshape(bit_in, len/2,2); %Rs = 1/2Rb
    % inMatrix = [bit_in(1:2:end)', bit_in(2:2:end)']';% another way
    inInt = inMatrix(:,1)*2 + inMatrix(:,2);
    
    qpskSym = table(inInt+1);

    解调实现:

    % Function to perform QPSK demodulation
    
    function [demodata]=qpskdemod(idata,qdata,para,nd,ml)
    
    %****************** variables *************************
    % idata :input Ich data
    % qdata :input Qch data
    % demodata: demodulated data (para-by-nd matrix)
    % para   : Number of paralell channels
    % nd : Number of data
    % ml : Number of modulation levels
    % (QPSK ->2  16QAM -> 4)
    % *****************************************************
    
    demodata=zeros(para,ml*nd);
    demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0;
    demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;
    
    %EOF
    

     

    3、MPSK

    MPSK调制阶数越高,ber性能越差,但频带利用率提高

    实现方式采用: pskmod函数

    4、QAM

    QAM调制方式的发送信号相位、幅度都会变化。在AWGN信道中,16QAM的ber性能优于16PSK,大约好4个dB。

    调制实现:

    function qammod=qammod(qam_work,bits_in )
    
    if qam_work == 1
       full_len = length(bits_in);
       m=1;
       for k=-3:2:3
          for l=-3:2:3
             table(m) = (k+j*l)/sqrt(10); % power normalization
             m=m+1;
          end
       end
       table=table([0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10]+1); % Gray code mapping pattern for 8-PSK symbols
       inp=reshape(bits_in,4,full_len/4);
       qammod=table([8 4 2 1]*inp+1);  % maps transmitted bits into 16QAM symbols
    end

    解调实现:

    % qamdemod.m
    % Function to decode 16QAM modulation
    function [demodata]=qamdemod(idata,qdata,para,nd,ml)
    
    %****************** variables *************************
    % idata :input Ich data
    % qdata :input Qch data
    % demodata: demodulated data (para-by-nd matrix)
    % para   : Number of paralell channels
    % nd : Number of data
    % ml : Number of modulation levels
    % (QPSK ->2  16QAM -> 4)
    % *****************************************************
    
    k=sqrt(10);
    idata=idata.*k;
    qdata=qdata.*k;
    demodata=zeros(para,ml*nd);
    m2=ml/2;       
    count2=0; 
    
    for ii = 1:nd
          
       	a=1;
        b=1;
       	i_lngth=0;
        q_lngth=0;
          
        for jj= 1:m2
            
           if jj ~= 1                  
              	if demodata((1:para),jj-1+count2)==1
                   	a=-a;               
                end    
               	if demodata((1:para),m2+jj-1+count2)==1
                   	b=-b;
                end
                i_lngth=i_lngth+i_plrty.*2.^(m2-jj+1);
                q_lngth=q_lngth+q_plrty.*2.^(m2-jj+1);
           end       
            if idata((1:para),ii) >= i_lngth
               demodata((1:para),jj+count2)=a>=0;
               i_plrty=1;
            else
           	   demodata((1:para),jj+count2)=a<=0;
               i_plrty=-1;
            end       
            if qdata((1:para),ii) >= q_lngth
               demodata((1:para),m2+jj+count2)=b>=0;
               q_plrty=1;  
            else
     		   demodata((1:para),m2+jj+count2)=b<=0;
               q_plrty=-1;
            end           
        end  % for jj= 1:m2    
        count2=count2+ml;            
     end  % for ii = 1:nd          
    
    

     

    展开全文
  • M-QAM 调制解调功能 - 调制采用格雷编码 解调功能- 艰难的决定- 软决策(带有 LLR 输出)
  • MATLAB实现QAM调制和软解调,同时实现卷积码编码和维特比译码。
  • 16QAM信号调制解调Matlab仿真,包含星座图,误码率,噪声,成型,匹配滤波等
  • 系统包含功率谱,星座图,误码率曲线和眼图
  • 此代码为MQAM的matlab仿真代码,其中包含4QAM,16QAM,64QAM,256QAM的调制与解调,以及加入高斯白噪声后的误码率,星座图。
  • figure plot(0:0.1:14.9,qq) title('误码率曲线16qam(黄剑文)'); %-----------------------------------% fs = 1000; sps = 32; txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol',sps); ed = ...
  • 16进制QAM调制解调系统包含功率谱,星座图,误码率和眼图, 信噪比为13;t2f函数,请到我的文章里面去拷贝一下!...t2f请到我的文章里面去拷贝一下:《MATLAB仿真QAM调制解调系统包含功率谱,星座图,误码率和眼图》
  • 基于Matlab----16QAM调制与解调

    千次阅读 2020-06-08 14:49:50
    基于Matlab----16QAM调制与解调一、题目二、仿真要求三、主要代码四、仿真结果 一、题目 16QAM调制解调 二、仿真要求 用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相比较。 三、主要...
  • 此均衡器采用线性自适应算法中的最小均方算法(LMS),其结构由线性横向滤波器和需要训练序列的滤波器抽头系数更新模块组成,它可实现16/64/256点的QAM解调。利用MATLAB/Simulink对LMS自适应均衡器的收敛速度、误码...
  • 摘 要 正交振幅调制 QAM Quadrature Amplitude Modulation 是一种功率加宽带相 对高效的信道调制技术广泛应用于数字电视无线宽带等传输领域本文针对 16QAM 系统调制解调系统利 MATLAB 工具对整个系统进行完整仿真并 ...
  • QAM调制的matlab实现

    2019-02-07 21:50:20
    模拟实现一个16-QAM的调制器和解调器,同时信道采用加性高斯白噪声信道
  • 不能使用communication toolbox里的函数,也就是不能使用modulate(modom.qammod())这个函数。实现modulate和的modulate的过程并加上高斯白噪音,求SNR\SER\BER
  • 基于MATLAB16QAM调制解调技术研究.ppt

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 512
精华内容 204
关键字:

matlabqam解调

matlab 订阅