基于Matlab实现ASK、PSK、FSK 调制和 BER 与 SNR 计算附完整代码

简介: 基于Matlab实现ASK、PSK、FSK 调制和 BER 与 SNR 计算附完整代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

This paper mainly discusses about three basic digital modulation process ASK, FSK, PSK. These modulation schemes can be characterized by their transmitted symbols which consist of a discrete set of values occurring at gradually spaced intervals. The selection of a digital modulation technique for a specific application depend not only the bandwidth efficiency and implementation complexity but also error rate occurred in a bit (BER) and signal to noise ratio. Binary modulation methods use two level symbols and are facile to implement, provide good error substantiation. BER is a key parameter that used for assessing systems that transmit signal data from one location to another. SNR is well known measure of how the signal and noise power compare against each other. It directly affects the probability of error performance of a system. In this paper, we have implemented ASK, FSK and PSK using MATLAB.

⛄ 完整代码

clc

clear all

msglen=1000;

%msglen= number of bits to be transmitted

%take msglen=10000, or 20000 for more accuracy


%%===============================================

n=msglen;

b=randi(1,n);

f1=1;f2=2;

t=0:1/30:1-1/30;

%ASK

sa1=sin(2*pi*f1*t);

E1=sum(sa1.^2);

sa1=sa1/sqrt(E1); %unit energy

sa0=0*sin(2*pi*f1*t);

%FSK

sf0=sin(2*pi*f1*t);

E=sum(sf0.^2);

sf0=sf0/sqrt(E);

sf1=sin(2*pi*f2*t);

E=sum(sf1.^2);

sf1=sf1/sqrt(E);

%PSK

sp0=-sin(2*pi*f1*t)/sqrt(E1);

sp1=sin(2*pi*f1*t)/sqrt(E1);


%MODULATION

ask=[];psk=[];fsk=[];

for i=1:n

   if b(i)==1

       ask=[ask sa1];

       psk=[psk sp1];

       fsk=[fsk sf1];

   else

       ask=[ask sa0];

       psk=[psk sp0];

       fsk=[fsk sf0];

   end

end

figure(1)

subplot(411)

stairs(0:10,[b(1:10) b(10)],'linewidth',1.5)

axis([0 10 -0.5 1.5])

title('Message Bits');grid on

subplot(412)

tb=0:1/30:10-1/30;

plot(tb, ask(1:10*30),'b','linewidth',1.5)

title('ASK Modulation');grid on

subplot(413)

plot(tb, fsk(1:10*30),'r','linewidth',1.5)

title('FSK Modulation');grid on

subplot(414)

plot(tb, psk(1:10*30),'k','linewidth',1.5)

title('PSK Modulation');grid on

xlabel('Time');ylabel('Amplitude')

%AWGN

for snr=0:20

   askn=awgn(ask,snr);

   pskn=awgn(psk,snr);

   fskn=awgn(fsk,snr);


   %DETECTION

   A=[];F=[];P=[];

   for i=1:n

       %ASK Detection

       if sum(sa1.*askn(1+30*(i-1):30*i))>0.5

           A=[A 1];

       else

           A=[A 0];

       end

       %FSK Detection

       if sum(sf1.*fskn(1+30*(i-1):30*i))>0.5

           F=[F 1];

       else

           F=[F 0];

       end

       %PSK Detection

       if sum(sp1.*pskn(1+30*(i-1):30*i))>0

           P=[P 1];

       else

           P=[P 0];

       end

   end


   %BER

   errA=0;errF=0; errP=0;

   for i=1:n

       if A(i)==b(i)

           errA=errA;

       else

           errA=errA+1;

       end

       if F(i)==b(i)

           errF=errF;

       else

           errF=errF+1;

       end

       if P(i)==b(i)

           errP=errP;

       else

           errP=errP+1;

       end

   end

   BER_A(snr+1)=errA/n;

   BER_F(snr+1)=errF/n;

   BER_P(snr+1)=errP/n;

end


figure(2)

subplot(411)

stairs(0:10,[b(1:10) b(10)],'linewidth',1.5)

axis([0 10 -0.5 1.5]);grid on

title('Received signal after AWGN Channel')

subplot(412)

tb=0:1/30:10-1/30;

plot(tb, askn(1:10*30),'b','linewidth',1.5)

title('Received ASK signal');grid on

subplot(413)

plot(tb, fskn(1:10*30),'r','linewidth',1.5)

title('Received FSK signal');grid on

subplot(414)

plot(tb, pskn(1:10*30),'k','linewidth',1.5)

title('Received PSK signal');grid on

figure(3)

semilogy(0:20,BER_A, 'b','linewidth',2)

title('BER Vs SNR')

grid on;

hold on

semilogy(0:20,BER_F,'r','linewidth',2)

semilogy(0:20,BER_P, 'k','linewidth',2)

xlabel('Eo/No(dB)')

ylabel('BER')

hold off

legend('ASK','FSK','PSK');


⛄ 运行结果

⛄ 参考文献

[1] Bharati S ,  Rahman M A ,  Podder P . Implementation of ASK, FSK and PSK with BER vs. SNR comparison over AWGN channel[J].  2020.

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
基于粒子滤波器的电池剩余使用寿命计算matlab仿真
本研究基于粒子滤波器预测电池剩余使用寿命(RUL),采用MATLAB2022a实现。通过非线性动力学模型模拟电池老化过程,利用粒子滤波器处理非线性和非高斯问题,准确估计电池SOH变化趋势,进而预测RUL。系统仿真结果显示了良好的预测性能。
|
3月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
113 2
|
3月前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
247 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
146 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
5月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
116 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
5月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
73 1
|
6月前
|
安全 C++
基于MATLAB的电力线路参数计算仿真
*1. 课题概述** - 电力线路分为输电与配电,计算关键参数至关重要 - 本项目开发基于MATLAB的软件,用于计算电力线路的重要参数 *2. 系统仿真结果** - 实现了工频电场、电力系统潮流等参数的计算。 - 包括MATLAB界面设计与计算功能实现。 *3. 系统原理简介** - **额定电压**: 设备最佳工作电压,保障性能稳定及延长使用寿命。 - **输变电设施**: 运行时产生工频电场和磁场,需符合国家标准限值。 - **线径计算**: 依据电流密度和趋肤效应确定导线截面积。 - **电力系统潮流计算**: 基于牛顿-拉夫逊法求解电力系统稳态运行状态,用于检查系统过负荷及电压质量。
|
6月前
|
监控
基于偏微分方程离散化计算的地下换热器建模与温度检测matlab仿真
**摘要:** 探索地下换热器的建模与温度检测,使用MATLAB2022a进行系统仿真,关注传热过程的热传导、对流和辐射。通过离散化偏微分方程建立数值模型,模拟温度场,考虑地质特性和水流影响。建模以网格单元描述温度变化,采用热电偶、红外和光纤测温技术验证模型并监控温度,各具优缺点。光纤测温法提供高精度和抗干扰的分布式监测。

热门文章

最新文章