%%% 初始化参数

%%%%%%%%%%%%%%%%%%%%%

T=1;                          % 基带信号宽度,也就是频率

fc=10/T;                      % 载波频率

ml=2;                         % 调制信号类型的一个标志位nb=100;                       % 传输的比特数

delta_T=T/200;                % 采样间隔

fs=1/delta_T;                 % 采样频率

SNR=0;                        % 信噪比

t=0:delta_T:nb*T-delta_T;     % 限定t的取值范围

N=length(t);                  % 采样数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%   调制部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 基带信号的产生

data=randn(1,nb)>0.5;         % 调用一个随机函数(0 or 1),输出到一个1*100的矩阵

datanrz=data.*2-1;            % 变成极性码

data1=zeros(1,nb/delta_T);    % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); % 将极性码变成对应的波形信号

end

% 将基带信号变换成对应波形信号

data0=zeros(1,nb/delta_T);    % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

data0((q-1)/delta_T+1:q/delta_T)=data(q); % 将极性码变成对应的波形信号

end

% 发射的信号

data2=abs(fft(data1));

% 串并转换,将奇偶位数据分开

idata=datanrz(1:ml:(nb-1));   % 将奇偶位分开,因此间隔m1为2

qdata=datanrz(2:ml:nb);

% QPSK信号的调制

ich=zeros(1,nb/delta_T/2);    % 创建一个1*nb/delta_T/2的零矩阵,以便后面存放奇偶位数据

for i=1:nb/2

ich((i-1)/delta_T+1:i/delta_T)=idata(i);

end

for ii=1:N/2

a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii));

end

idata1=ich.*a;                % 奇数位数据与余弦函数相乘,得到一路的调制信号

qch=zeros(1,nb/2/delta_T);

for j1=1:nb/2

qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1);

end

for jj=1:N/2

b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj));

end

qdata1=qch.*b;               % 偶数位数据与余弦函数相乘,得到另一路的调制信号

s=idata1+qdata1;             % 将奇偶位数据合并,s即为QPSK调制信号

ss=abs(fft(s));              % 快速傅里叶变换得到频谱

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%   瑞利衰落信道和高斯信道

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 瑞利衰落信道

ray_ich=raylrnd(0.8,1,nb/2/delta_T);

ray_qch=raylrnd(0.8,1,nb/2/delta_T);

Ray_idata=idata1.*ray_ich;

Ray_qdata=qdata1.*ray_qch;

Ray_s=Ray_idata+Ray_qdata;

%%%%%%%%%%%%%%%%%%%%%%%%%%

% 高斯信道

s1=awgn(s,SNR);              % 通过高斯信道之后的信号

s11=abs(fft(s1));            % 快速傅里叶变换得到频谱

s111=s1-s;                   % 高斯噪声曲线

%%%%%%%%%%%%%%%%%%%%%%%%%%

Awgn_s=awgn(Ray_s,SNR);         % 通过高斯信道再通过瑞利衰落信道

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK 解调部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 解调部分(高斯信道)

idata2=s1.*a;                % 这里面其实隐藏了一个串并转换的过程

qdata2=s1.*b;                % 对应的信号与正余弦信号相乘

idata3=zeros(1,nb/2);        % 建立1*nb数组,以存放解调之后的信号

qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0

for n=1:nb/2

%     A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T));

if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0

idata3(n)=1;

else idata3(n)=0;

end

%     A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T));

if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0

qdata3(n)=1;

else qdata3(n)=0;

end

end

% 为了显示星座图,将信号进行处理

idata4=zeros(1,nb/2);

qdata4=zeros(1,nb/2);

for n=1:nb/2

Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T;

if Awgn_ichsum(n)>=0

idata4(n)=1;

else idata4(n)=0;

end

Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T;

if Awgn_qchsum(n)>=0

qdata4(n)=1;

else qdata4(n)=0;

end

end

% 将判决之后的数据存放进数组

demodata=zeros(1,nb);

demodata(1:ml:(nb-1))=idata3; % 存放奇数位

demodata(2:ml:nb)=qdata3;     % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平)

demodata1=zeros(1,nb/delta_T);    % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % 将极性码变成对应的波形信号

end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数

Awgn_num_BER=sum(abs(demodata-data))

%%%%%%%%%%%%%%%%%%%

% 解调部分(瑞利+高斯)

Ray_idata2=Ray_s.*a;                % 这里面其实隐藏了一个串并转换的过程

Ray_qdata2=Ray_s.*b;                % 对应的信号与正余弦信号相乘

% Ray_idata3=zeros(1,nb/2);            % 建立1*nb数组,以存放解调之后的信号

% Ray_qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0

% for n=1:nb/2

%     if Ray_sum(Ray_idata2((n-1)/delta_T+1:n/delta_T))>=0

%        Ray_idata3(n)=1;

%     else Ray_idata3(n)=0;

%     end

%     if Ray_sum(Ray_qdata2((n-1)/delta_T+1:n/delta_T))>=0

%        Ray_qdata3(n)=1;

%     else Ray_qdata3(n)=0;

%     end

% end

% 为了显示星座图,将信号进行处理

Ray_idata4=zeros(1,nb/2);

Ray_qdata4=zeros(1,nb/2);

for n=1:nb/2

Ray_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T;

if Ray_ichsum(n)>=0

Ray_idata4(n)=1;

else Ray_idata4(n)=0;

end

Ray_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T;

if Ray_qchsum(n)>=0

Ray_qdata4(n)=1;

else Ray_qdata4(n)=0;

end

end

% 将判决之后的数据存放进数组

Ray_demodata=zeros(1,nb);

Ray_demodata(1:ml:(nb-1))=Ray_idata4; % 存放奇数位

Ray_demodata(2:ml:nb)=Ray_qdata4;     % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平)

Ray_demodata1=zeros(1,nb/delta_T);    % 创建一个1*nb/delta_T的零矩阵

for q=1:nb

Ray_demodata1((q-1)/delta_T+1:q/delta_T)=Ray_demodata(q); % 将极性码变成对应的波形信号

end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数

Ray_num_BER=sum(abs(Ray_demodata-data))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%                误码率计算

%%      调用了cm_sm32();和cm_sm33()函数

%%声明:  函数声明在另外俩个M文件中

%%作用:  cm_sm32()用于瑞利信道误码率的计算

%%      cm_sm33()用于高斯信道误码率的计算

%% ecoh on/off 作用在于决定是否显示指令内容

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SNRindB1=0:1:6;

SNRindB2=0:0.1:6;

% 瑞利衰落信道

for i=1:length(SNRindB1),

[pb,ps]=cm_sm32(SNRindB1(i));         % 比特误码率

smld_bit_ray_err_prb(i)=pb;

smld_symbol_ray_err_prb(i)=ps;

disp([ps,pb]);

echo off;

end;

% 高斯信道

echo on;

for i=1:length(SNRindB1),

[pb1,ps1]=cm_sm33(SNRindB1(i));

smld_bit_awgn_err_prb(i)=pb1;

smld_symbol_awgn_err_prb(i)=ps1;

disp([ps1,pb1]);

echo off;

end;

% 理论曲线

echo on;

for i=1:length(SNRindB2),

SNR=exp(SNRindB2(i)*log(10)/10);                 % 信噪比

theo_err_awgn_prb(i)=0.5*erfc(sqrt(SNR));        % 高斯噪声理论误码率

theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/SNR));     % 瑞利衰落信道理论误码率

echo off;

end;

matlab编码流程图,高手来帮我看看该怎么画这些代码的流程图相关推荐

  1. 计算阶比分析 matlab_(案例)层次聚类分析Matlab编码计算

    "层次聚类分析Matlab编码计算" 测试数据集(9个变量,21个样本): 样本序号 人口密度x1/(人·.km-2) 人均耕地面积x 2/hm2) 森林覆盖率x3/% 农民人均纯 ...

  2. ahp层次分析法matlab代码_(案例)AHP层次决策分析Matlab编码计算

    "层次聚类分析Matlab编码计算" 01 - AHP层次决策分析计算函数 求判断矩阵最大特征根和归一化特征向量: function [maxEigVal,w] = maxEigV ...

  3. php 求子串,字符串的连接与求子串,目测只有高手可以帮我解答了

    已结贴√ 问题点数:10 回复次数:41 字符串的连接与求子串,目测只有高手可以帮我解答了 #include #include #define MAXSIZE 256            //定义串 ...

  4. 我给你一段程序,能不能帮我画出它的流程图

    很抱歉,我并不能为您画出程序的流程图.但是,您可以使用在线工具或者软件来生成流程图.例如 Visio 或 Lucidchart.您可以将程序代码输入到这些工具中,它们就可以自动生成流程图.

  5. matlab抓取股票数据,Matlab经过sina web接口获取个数即时股票数据函数实现代码

    Matlab通过sina web接口获取个数即时股票数据函数实现代码 代码如下: function stockinfo = queryprice(stocktype, stockid) %stockt ...

  6. 画流程图activiti流程图_干货!小白也能一天画100张高逼格流程图

    今天是在一起两周年零128天纪念日~ 你喜滋滋地订好了花,买好了酒,暗暗盘算着下班以后赶紧走~ 不料老板的命令从天而降 "出100张流程图,今天给我!" What???100张!! ...

  7. MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例

    MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例 MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例 1.基本概念 人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的 ...

  8. 这么画c语言编程流程图,我想问一下这两个C语言的流程图像图中这么画吗?

    C语言里的if和else后面实际上都只能跟一条语句,只不过C语言里还允许用大括号把很多条行语句复合起来,等效成一个.for循环之类的情况也类似.而有些语言里是用成对的关键词来起到这个作用的.所以关于流 ...

  9. 【MATLAB】无人驾驶车辆的模型预测控制技术(精简讲解和代码)【运动学轨迹规划】

    文章目录 0.友情链接 1.引言 2.预测模型 3.滚动优化 3.1.线性化 3.2.UrU_rUr​的求取 3.3.离散化与序列化 3.4.实现增量控制 4.仿真示例 0.友情链接 B站链接1-北京 ...

最新文章

  1. 微众银行 CAIO 杨强:人工智能的新三大定律(附视频)
  2. 十年AI学者影响力盘点:何恺明排名第一,华人学者呈正向流入
  3. python末位1的位置_用Python黑了整个学院学姐的电话和QQ,爬虫牛皮!兄弟们耗子尾之!...
  4. mysql长事务慢查询解决方案_MySQL : 如何监控和处理慢查询与长事务 ?
  5. Java中List、Collections实现梭哈游戏
  6. 软件测试基础——理论知识
  7. css3中定义required,focus,valid和invalid样式
  8. CentOS7通过yum安装Openresty
  9. 主板声卡坏了会不会有电流声_选择声卡讲究多 不同领域适使用不同类型
  10. homebre mysql 启动_Mysql闪退问题图文解决办法
  11. 如何成为优秀的驱动开发工程师
  12. 搜狗新闻文本分析实例代码
  13. Shine——更简单的Android网络请求库封装
  14. 程序员今年最值得关注的 23 种新移动技术
  15. 名表依波路borel_依波路手表排名 依波路手表世界排名第几
  16. 男生晚上做什么兼职好?有什么好兼职推荐吗?
  17. 如何在html上放小游戏,如何在网页插入小游戏
  18. 多元统计分析及R语言建模(王斌会)第八、九、十章答案
  19. 使用 C 语言打开浏览器
  20. zlibirary如何登录自己的账号?看看这篇文章就可以了,zlibirary登录自己的账号,书籍直接邮寄到邮箱

热门文章

  1. 省一级计算机ppt,江苏省计算机一级PPT课件.ppt
  2. C++ 快速学习(一)
  3. fbx模型导入unity,绑了骨骼加蒙皮法线就反
  4. Apache Spark在海致大数据平台中的优化实践
  5. 复星金服微服务_复星金服打造“爱妈妈”互助共享平台,解决职场妈妈的后顾之忧...
  6. 话费充值 php,首信易支付,电话费充值接口
  7. 2007热点技术职位排行及点析
  8. NO.15——使用Appium自动化测试爬取微信朋友圈数据
  9. iphone邮箱看不到已发送_不看不知道 教你如何设置iPhone邮箱
  10. 当你部署tomcat遇到HTTP Status 500的时候