MFSK调制与相干解调-MATLAB基带仿真

MFSK调制原理

发送信号形式:(等概)

s 1 = ( E , 0 , … , 0 ) s_{1}=(\sqrt{\mathcal{E}}, 0, \ldots, 0) s1​=(E ​,0,…,0)
s 2 = ( 0 , E , … , 0 ) s_{2}=(0, \sqrt{\mathcal{E}}, \ldots, 0) s2​=(0,E ​,…,0)
⋮ \vdots ⋮
s M = ( 0 , … , 0 , E ) s_{M}=(0, \ldots, 0, \sqrt{\mathcal{E}}) sM​=(0,…,0,E ​)

其中 M M M为调制阶数, E \mathcal{E} E为符号能量,即每一个发送符号都是 M M M维向量。

M = 2 M=2 M=2时,就是我们常见的BFSK(2FSK)。

简单理解一下哈,频带中调制到的不同频率之间应该是互不影响的,那么在基带上应体现为各个发送信号之间是相互正交的。

因此在下面的仿真中,实际上采用的方法是利用二进制转十进制,把 log ⁡ 2 M \log_2M log2​M个比特映射为一个发送符号。这里如果不仿真误比特率,或者原始发送数据没别的用的话,在仿真中可以考虑直接给出用户的发送符号,写一个随机数表示调制位置,该位置置1,其余置0就可以了,解调同理,省去了进位制转换的麻烦,有兴趣的同学可以试一下~

特别注意:由于仿真语言不同,MATLAB的向量从1开始,因此二进制转十进制表示调制位置的值要加1。Python或者C则不用考虑这一问题。

相干解调

m ^ = arg ⁡ max ⁡ 1 ≤ m ≤ M r ⋅ s m \hat{m}=\underset{1 \leq m \leq M}{\arg \max} \text{ }{\boldsymbol{r} \cdot \boldsymbol{s}_{m}} m^=1≤m≤Margmax​ r⋅sm​

MFSK理论误码率

P e = 1 2 π ∫ − ∞ ∞ [ 1 − ( 1 − Q ( x ) ) M − 1 ] e − ( x − 2 E N 0 ) 2 2 d x P_{e}=\frac{1}{\sqrt{2 \pi}} \int_{-\infty}^{\infty}\left[1-(1-Q(x))^{M-1}\right] e^{-\frac{(x-\sqrt{\frac{2 \mathcal{E}}{N_{0}}})^{2}}{2}} d x Pe​=2π ​1​∫−∞∞​[1−(1−Q(x))M−1]e−2(x−N0​2E​ ​)2​dx

需要理论推导误码率的同学详情参考《通信原理》、《数字通信》等相关教材,可以私信博主。

仿真结果图

可以看到,当 M M M增大时,系统可靠性是提升的,实际上这是一种典型的“带宽换性能”。

关于2FSK在衰落信道下的情况,请移步:
2FSK在瑞利衰落信道下的相干解调与非相干解调-MATLAB基带仿真

MATLAB仿真程序

clc
clear
close all
% Title: MFSK的调制与相干解调实现V1.2 %
% Data: 2019.08.21 %
% Author: K.X.SongM = 4;                      % 此处修改M值
k = log2(M);
L = k*100000;               % 蒙特卡洛仿真次数,此处*k是保证L/k为整数
data = round(rand(1,L));    % 生成长度为L的仿真数据
send = zeros(M,L/k);        % 预置调制后的发送数据,每列为一个符号,行表示M维信号。
mod_nonzero_place = zeros(1,L/k);       % 预置调制中的非零位置
demod_nonzero_place = zeros(1,L/k);     % 预置解调中的非零位置% 调制
for q = 1:L/kmod_nonzero_place(q) = bin2dec(num2str(data(k*q-k+1:k*q)));        % 第k*q-k+1位到第k*q位的二进制数据转成字符串后换为十进制数send(mod_nonzero_place(q)+1,q) = 1;                                % 十进制数+1为非零位置
end% 设置信噪比
EbN0_dB = 0:12;
EbN0 = 10.^(EbN0_dB/10);
Eb = 1/k;
N0 = Eb ./ EbN0;
error = zeros(1,length(EbN0_dB));
ser = zeros(1,length(EbN0_dB));
tser = zeros(1,length(EbN0_dB));for q = 1:length(EbN0_dB)noise = sqrt(N0(q)/2) * randn(M,L/k);   % 设置噪声receive = send + noise;                 % 通过AWGN信道后接收信号for w = 1:L/kdemod_nonzero_place = find(receive(:,w) == max(receive(:,w))) - 1;      % 减1是为了与调制非零位置对应% 统计错误数if (mod_nonzero_place(w) ~= demod_nonzero_place)error(q) = error(q) + 1;endendser(q) = error(q) / (L/k);% MFSK相干解调理论误码率ac = @(x)(1-(1-erfc(x/sqrt(2))/2).^(M-1)).*exp((-(x-sqrt(2*k*EbN0(q))).^2)/2);    tser(q) = (1/sqrt(2*pi)).*integral(ac,-inf,inf);
end% 画图
semilogy(EbN0_dB,ser,'o',EbN0_dB,tser,'b');
grid on;
xlabel('Eb/N0 (dB)');
ylabel('SER');
legend('MFSK相干解调仿真误码率','MFSK相干解调理论误码率');
axis([0 12 10^-5 10^-1]);

MFSK调制与相干解调-MATLAB基带仿真相关推荐

  1. QPSK调制与解调-MATLAB基带仿真

    QPSK调制与解调-MATLAB基带仿真 仿真步骤 产生一定长度的值为0或1的随机序列 s ( t ) s(t) s(t). 将 s ( t ) s(t) s(t)映射到QPSK星座图上的星座点. 产 ...

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

    16QAM调制与解调-MATLAB基带仿真 ---------------------------- 2020.05.14更新:---------------------------------- 有 ...

  3. qam已调信号matlab相干解调,通信原理课程设计-基于MATLAB的M-QAM调制及相干解调的设计与仿真.doc...

    通 信 原 理 课 程 设 计 报 告 题 目:基于MATLAB 的M-QAM调 制及相干解调的设计与仿真 班 级:通信工程 1411 姓 名: 成 绩: 日 期:2016 年 12 月 21 日 基 ...

  4. (7,4)汉明码在BPSK系统下的性能-MATLAB基带仿真

    (7,4)汉明码在BPSK系统下的性能-MATLAB基带仿真 仿真步骤 产生一定长度的值为0或1的随机序列 d ( t ) d(t) d(t). 根据监督矩阵,将初始数据序列映射为编码后的二元序列 s ...

  5. matlab fm非相干解调,FM调制和相干解调,非相干解调讲解.doc

    PAGE ???通信原理课程设计报告 题目:模拟通信系统频率调制的实现 专业班级: 13电信科技2班 姓 名: 学 号: 指导教师: 彭文娟 [摘要]本设计主要是用MATLAB软件仿真实现语音信号作为 ...

  6. matlab fm非相干解调,FM调制和相干解调,非相干解调精要.doc

    ? ?? 通信原理课程设计报告 题目:模拟通信系统频率调制的实现 专业班级: 13电信科技2班 姓 名: 学 号: 指导教师: 彭文娟 [摘要] 本设计主要是用MATLAB软件仿真实现语音信号作为输入 ...

  7. matlab fm非相干解调,FM调制和相干解调,非相干解调.pdf

    通信原理课程设计报告 题目: 模拟通信系统频率调制的实现 专业班级: 13 电信科技 2 班 姓 名: 学 号: 指导教师: 彭文娟 [摘要] 本设计主要是用 MATLAB软件仿真实现语音信号作为输入 ...

  8. 对SSB信号的调制以及相干解调过程进行仿真

    对SSB信号的调制以及相干解调过程进行仿真 一.要求 利用Matlab,对SSB信号的调制以及相干解调过程进行仿真,给出仿真过程的时域波形及频谱,比较其不同并合理解释. 二.使用软件 matlab20 ...

  9. 基于matlab的正交振幅调制与解调,正交幅度调制(QAM)及解调Matlab仿真

    正交幅度调制(QAM)及解调Matlab仿真实验目的: 1.掌握QAM及解调原理与特性: 2.了解星座图的原理及用途. 实验内容: 1.编写MATLAB程序仿真QAM及相干解调: 2.观察I.Q两路基 ...

最新文章

  1. 串结构练习——字符串匹配
  2. 第7周实践项目2.2 求解报数问题
  3. 一起学nRF51xx 16 -  adc
  4. java生命小游戏_Java修炼——飞机生存小游戏
  5. after you've written your business model
  6. Python-关于正则表达式的总结
  7. 上采样层什么意思_佛前上三柱香、磕三个头是什么意思!
  8. Ubuntu下的QQ
  9. html 横屏滚动字幕,手机知识:手机横屏滚动字幕
  10. 超参数(Hyperparameter)
  11. 7 款基于 HTML5 Canvas 的超炫 3D 动画效果
  12. spring_boot 发布成war包 ,部署到外部的tomcat
  13. 后台站点-菜单管理功能(一)
  14. JavaWeb过滤器(Filter)
  15. PHP中奇葩的 ?:,??,isset,empty
  16. OSChina 周六乱弹 ——手机进化史?程序员用啥手机?
  17. Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)
  18. 基于tushare量化交易模型基础构建(偿债能力排名)
  19. 中国塑料土工格栅行业市场供需与战略研究报告
  20. 逻辑回归算法之梯度算法

热门文章

  1. 《如何让你爱的人爱上你》分享
  2. 使用frp配置内网穿透
  3. 用python编程、假设一年期定期利率_Python习题选编
  4. 工业数字化转型中的数据治理
  5. 归并排序(递归+非递归)
  6. python 列表去重 保持顺序
  7. 单电源运放滤波器设计
  8. 基于Pyhton的二维离散正弦变换(DST)及其反变换(IDST)
  9. 概念模型、逻辑模型和物理模型的区别
  10. 使用apache的ZipOutputStream进行zip文件压缩