本帖最后由 814685372 于 2020-6-8 14:06 编辑

请问这个代码我出错辽  有没有大佬看看怎么改

clear all;

clc;

%%参数设置

snr_mini = 5;               %信噪比最小值

snr_max = 20;               %信噪比最大值

TxSampleRate = 32e9;        %信号的码元速率

TxLinewidth = 0;            %发射信号的载波线宽

TxCarrierRate = 0;          %发射信号的载波频率

DataSymbolNumber = 10000;   %数据点的个数

ClassifySetNumber = 100;    %独立仿真的次数

printJ = 5;                 %需要输出观察的调制方式,0为不输出

printXingZuo = 1;           %是否需要打印星座图,0为不打印

% signal generation;如果想要进行100组独立的测试,可以建立100次循环,产生100组独立的数据

for j = 1:6  % bit per symbol: 1. PSK; 2. QPSK; 3.8QAM; 4. 16QAM; 5. 32QAM; 6.64QAM...

System.BitPerSymbol = j;

snr = snr_mini:snr_max;  %SNR信噪比的设置,单位dB

classify_correct_ratio = zeros(length(snr), 1);

for snrIndex= 1:length(snr)

if(j==printJ) fprintf('\n--------------- snr = %d ------------\n',snr(snrIndex)); end

classify_correct = 0;

for i = 1:ClassifySetNumber

Tx.SampleRate = TxSampleRate; %symbol Rate,信号的码元速率,可以自行定义

Tx.Linewidth = TxLinewidth;%发射信号的载波的线宽,一般与信号的相位噪声有关

Tx.Carrier = DataSymbolNumber;%发射信号的载波频率

M = 2^System.BitPerSymbol;

%%信号生成

Tx.DataSymbol = randi([0 M-1],1,DataSymbolNumber);%每一次随机产生的数据量

%数据的不同调制方式产生:这里把2^3(8QAM)的形式单独拿出来设置,是为了实现最优的星型8QAM星座图

if M ~= 8;

h = modem.qammod('M', M, 'SymbolOrder', 'Gray');

Tx.DataConstel = modulate(h,Tx.DataSymbol);

else

tmp = Tx.DataSymbol;

tmp2  = zeros(1,length(Tx.DataSymbol));

for kk = 1:length(Tx.DataSymbol)

switch tmp(kk)

case 0

tmp2(kk) = 1 + 1i;

case 1

tmp2(kk) = -1 + 1i;

case 2

tmp2(kk) = -1 - 1i;

case 3

tmp2(kk) = 1 - 1i;

case 4

tmp2(kk) = 1+sqrt(3);

case 5

tmp2(kk) = 0 + 1i .* (1+sqrt(3));

case 6

tmp2(kk) = 0 - 1i .* (1+sqrt(3));

case 7

tmp2(kk) = -1-sqrt(3);

end

end

Tx.DataConstel = tmp2;

clear tmp tmp2;

end

Tx.Signal = Tx.DataConstel;

%数据的载波加载,考虑到相位噪声等

N = length(Tx.Signal);

dt = 1/Tx.SampleRate;

t = dt*(0:N-1);

Phase1 = [0, cumsum(normrnd(0,sqrt(2*pi*Tx.Linewidth/(Tx.SampleRate)), 1, N-1))];

carrier1 = exp(1i*(2*pi*t*Tx.Carrier + Phase1));

Tx.Signal = Tx.Signal.*carrier1;

Rx.Signal = awgn(Tx.Signal,snr(snrIndex),'measured');%数据在AWGN信道下的接收

%%信号识别

CMAOUT = Rx.Signal;

%去除直流成分

CMAOUT = CMAOUT - mean(CMAOUT);

%normalization接收信号功率归一化

CMAOUT=CMAOUT/sqrt(mean(abs(CMAOUT).^2));

s = CMAOUT;

signalpow = mean(abs(s).^2);%信号功率

noisepow = signalpow/(10^(snr(snrIndex)/10));%噪声功率

C20_hat = mean(s.^2);

C21_hat = mean(abs(s).^2);

C21_hat = C21_hat-noisepow;%计算信号二阶累积量C21时,由于C21为信号模的平方

%而我们接收的s是在AWGN信道下接收的,所以求C21时还应考虑噪声功率。

C40_hat = mean(s.^4)-3*C20_hat^2;

%C41_hat = mean((s.^3).*conj(s))-3*C20_hat*C21_hat;

C42_hat = mean(abs(s).^4)-abs(C20_hat)^2-2*C21_hat^2;

C40_normal = C40_hat/C21_hat.^2;

%C42_normal = C42_hat/C21_hat.^2;

AbsC40 = abs(C40_normal);

if(j==printJ)    fprintf('%g   ',AbsC40);   end

if(AbsC40>=1.5)%PSK

classify = 1;

elseif(AbsC40>=0.9&&AbsC40<1.1)%QPSK

classify = 2;

elseif(AbsC40>=1.1&&AbsC40<1.3)%8QAM

classify = 3;

elseif(AbsC40>=0.67&&AbsC40<0.9)%16QAM

classify = 4;

elseif(AbsC40<0.35)%32QAM

classify = 5;

elseif(AbsC40>=0.35&&AbsC40<0.63)%64QAM

classify = 6;

end

if(classify == System.BitPerSymbol)

classify_correct = classify_correct + 1;

end

%subplot(1,7,snrIndex);%绘制原始噪声

%plot(Rx.Signal,'.');

%plot(CMAOUT,'.');

end

classify_correct_ratio(snrIndex) = classify_correct/ClassifySetNumber*100;

end

%%绘制图形

figure(1);subplot(2, 3, j);

plot(snr, classify_correct_ratio, '-b.');

axis([snr_mini snr_max 0 110]);

ylabel('识别正确率/%');

xlabel('信噪比/dB');

if(j == 1)

title('PSK调制方式识别');

elseif(j == 2)

title('QPSK调制方式识别');

elseif(j == 3)

title('8QAM调制方式识别');

elseif(j == 4)

title('16QAM调制方式识别');

elseif(j == 5)

title('32QAM调制方式识别');

else

title('64QAM调制方式识别');

end

if(printXingZuo==1)

figure(2);subplot(2, 3, j);

plot(real(CMAOUT),imag(CMAOUT),'.');

if(j == 1)

title('PSK调制方式星座图');

elseif(j == 2)

title('QPSK调制方式星座图');

elseif(j == 3)

title('8QAM调制方式星座图');

elseif(j == 4)

title('16QAM调制方式星座图');

elseif(j == 5)

title('32QAM调制方式星座图');

else

title('64QAM调制方式星座图');

end

end

end

错误使用 modem.qammod (line 82)

MODEM.QAMMOD has been removed. Use QAMMOD instead.

出错 Untitled (line 36)

h = modem.qammod('M', M, 'SymbolOrder', 'Gray');

awgn matlab,Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类相关推荐

  1. 加性高斯白噪声信道:MATLAB小例题

    1.dB (1)dB 是一个纯计数单位:dB = 10logX;              X = 1000000000000000 = 10logX = 150 dB X = 0.000000000 ...

  2. 《通信原理》加性高斯白噪声信道

    实验一:在正弦信号上叠加功率为-20dBW的高斯白噪声. 1.实验代码 %加性高斯白噪声信道-用awgn(x,snr)实现t=0:0.001:10; %产生时间矢量t x=sin(2*pi*t); % ...

  3. matlab 图像中加入高斯白噪声,MATLAB——如何给图像添加高斯白噪声

    如何给图像添加高斯白噪声 今天下午到晚上都在看添加高斯噪声的问题,这也是困扰我半年的一个问题了,非常的难以忍受,今天决定征服它!在网上查阅无数资料后,锁定在振动论坛上的这篇文章中:http://www ...

  4. matlab如何造带限高斯白噪声,如何用Matlab产生高斯白噪?

    MATLAB中产生高斯白噪声的两个函数 MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. ...

  5. 【信道模型分析1】通过伪码相关峰分析信道模型对信号的影响——高斯白噪声信道/瑞丽多径信道

    目录 一.理论基础 二.核心程序 三.仿真测试结果 3.1高斯白噪声信道模型

  6. matlab中给信号添加高斯白噪声的两种方法,awgn计算过程,randn函数

    y=awgn(x,snr,px_dBW) 给信号x添加噪声功率为某个值的高斯白噪声. snr为信噪比,单位dB. px_dBW为信号x的指定功率(注意,是指定功率,而不是x本身的功率),单位dBW. ...

  7. Xiaojie雷达之路---MATLAB仿真---给信号添加高斯白噪声

    本次实验主要的目的是给产生的信号添加高斯白噪声 给信号添加高斯白噪声是通过函数awgn来实现的 MATLAB中的函数原型 Y=awgn(X,SNR) Y=awgn(X,SNR,SIGPOWER) Y= ...

  8. Matlab高斯白噪声信道仿真

    信号叠加一个均值为0.2,方差为0.5的高斯噪声后进行信号和噪声功率谱密度分析 信道噪声 Matlab含有高斯白噪声的函数库,可以直接调用: u = normrnd(0.2,sqrt(0.5),[1, ...

  9. 全速率话音信道matlab,在全部为全速率话音信道情况下,每个载频的话音信道数为:()。...

    施工放样的基本工作有哪些? 技术质量同业务竞赛考核内容分4个板块,分别为() 设备运行中的压缩空气的压力不小于(). 氢气在氧气中燃烧,参加反应的氢气和氧气的体积之和,等于生成水的体积.() 动物体细 ...

  10. 高斯噪声、高斯白噪声解析

    如何用matlab 产生 均值为0,方差为5的高斯噪声 2011-07-15 19:36 y=randn(1,2500); y=y/std(y); y=y-mean(y); a=0; b=5; y=a ...

最新文章

  1. Robot framework+python安装使用图解版
  2. 将 Shiro 作为应用的权限基础
  3. 实现集合类的元素删除和修改的一点实践。。。
  4. 001_JSON-lib下载和文档
  5. Win32汇编笔记-消息基础
  6. python编程字典100例_python中字典(Dictionary)用法实例详解
  7. 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
  8. 跨语言调用Hangfire定时作业服务
  9. 对一个正整数n,求出n!中末尾0的个数。
  10. oracle 12.2.0.1 使用 active dataguard broker 之二 switchover
  11. 数据共享是未来?通用福特丰田联手推进自动驾驶标准制定...
  12. 推荐一种优秀的数据结构技巧
  13. Python爬取12306车次信息
  14. 主板jrgb是什么_问答:现在的PC主机中有哪些配件支持RGB灯效?
  15. Win10虚拟桌面使用技巧
  16. 户外LED透明屏与室内透明屏区别,选型号建议
  17. 自然生长不含咖啡碱的茶树新品种--T三有机可可茶
  18. MFC实现窗口透明,并显示一张透明PNG图片
  19. Camera-ISP DP/DM/EE/NR/CR
  20. ios越狱,impactor无法使用的替代方案

热门文章

  1. 简单谈谈我所理解的货币发展史
  2. 计算机上的按键名有哪些,电脑键盘上各个按键名称与功能作用
  3. S3C2440 蜂鸣器 汇编语言,S3C2440 点亮led灯详解(基于MDK) | 勤奋的小青蛙
  4. 拉姆达表达式基本语句
  5. android手机无分区无法刷机,adb sideload 刷机教程:当你手机无法开机,内存里没有ROM时......
  6. Java课程设计--飞翔的小鸟
  7. Excel数据导入___你hold住么(二)
  8. sqli-labs(42-45)
  9. 调用支付jsapi缺少参数appid
  10. python爬取豆瓣电影排行榜前250名