matlab仿真 模拟调制(上)
(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容,有兴趣的读者请阅读原书)
1.幅度调制


clear all
ts=0.0025; %信号抽样时间间隔
t=0:ts:10-ts;%时间矢量
fs=1/ts;%抽样频率
df=fs/length(t); %fft的频率分辨率
%msg=randint(100,1,[-3,3],123)
msg=randi([-3,3],100,1);%生成消息序列
msg1=msg*ones(1,fs/10);%扩展成取样信号形式
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs%除以fs才是模拟信号的实际频谱
f=-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))%画出消息信号频谱
title('消息信号频谱')A=4;
fc=100;%载波频率
Sam=(A+msg2).*cos(2*pi*fc*t);%已调信号
Pam=fft(Sam)/fs;%已调信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Pam)))
title('AM信号频谱')
axis([-200 200 0 23])Pc=sum(abs(Sam).^2)/length(Sam);%已调信号功率
Ps=Pc-A^2/2;%消息信号功率
eta=Ps/Pc;%调制效率
首先是生成消息序列时的操作,我们生成的是模拟信号,所以要进行采样转化为数字信号
这里我们每隔0.1秒产生一个符号,时间长度为10s,所以一共产生100个符号,又因为采样时间为0.0025,所以我们每个符号都采样40次(0.1/0.0025),采样40次的效果就是每个序号在采样之后都出现了40次重复的情况(这里用ones实现了该效果)
将采样后的信号通过矩阵变换转成行向量。这就是采样后的数字信号。


由于时间有限,simulink的仿真内容之后有空再补


clear all
ts=0.0025; %信号抽样时间间隔
t=0:ts:5-ts;%时间矢量
fs=1/ts;%抽样频率%msg=randint(100,1,[-3,3],123)
msg=randi([-3,3],10,1);%生成消息序列
msg1=msg*ones(1,fs/2);
msg2=reshape(msg1.',1,length(t));
subplot(3,1,1)
plot(t,msg2)
title('消息信号')
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
A=4;
fc=100;
Sam=(A+msg2).*cos(2*pi*fc*t);dems=abs(hilbert(Sam))-A;%包络检波,并且去掉直流分量subplot(3,1,2)
plot(t,dems)%画出解调后的信号
title('无噪声的解调信号')y=awgn(Sam,20,'measured');%调制信号通过AWGN信道
dems2=abs(hilbert(y))-A;%包络检波,并且去掉直流分量
subplot(3,1,3)
plot(t,dems2)
title('信噪比为20dB时的解调信号')



clear all
ts=0.0025; %信号抽样时间间隔
t=0:ts:10-ts;%时间矢量
fs=1/ts;%抽样频率
df=fs/length(t); %fft的频率分辨率
%msg=randint(100,1,[-3,3],123)
msg=randi([-3,3],100,1);%生成消息序列
msg1=msg*ones(1,fs/10);%扩展成取样信号形式
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs%除以fs才是模拟信号的实际频谱
f=-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))%画出消息信号频谱
title('消息信号频谱')A=4;
fc=100;%载波频率
Sdsb=msg2.*cos(2*pi*fc*t);%已调信号
Pdsb=fft(Sdsb)/fs;%已调信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Pdsb)))
title('DSBSC信号频谱')
axis([-200 200 0 2])Pc=sum(abs(Sdsb).^2)/length(Sdsb);%已调信号频谱
Ps=sum(abs(msg2).^2)/length(msg2);%消息信号功率

和AM的思路一样,都是先生成消息序列,后构建数字信号


clear all
ts=0.0025;
t=0:ts:5-ts;
fs=1/ts;
df=fs/length(t);
f=-fs/2:df:fs/2-df;
msg=randi([-3,3],10,1);%生成消息序列
msg1=msg*ones(1,fs/2);%扩展成取样信号的形式
msg2=reshape(msg1.',1,length(t));subplot(3,1,1)
plot(t,msg2)
title('消息信号')fc=100;
Sdsb=msg2.*cos(2*pi*fc*t);%已调信号
y=Sdsb.*cos(2*pi*fc*t);%相干解调
Y=fft(y)./fs;%解调后的频谱
f_stop=100;%设计低通滤波器
n_stop=floor(f_stop/df);%
Hlow=zeros(size(f));
Hlow(1:n_stop)=2;
Hlow(length(f)-n_stop+1:end)=2;
DEM=Y.*Hlow;%通过点乘的方式使信号通过滤波器
dem=real(ifft(DEM))*fs;%最终得到的解调信号,因为刚开始构建的是实数信号,所以需要对DEM取实部。
subplot(3,1,2)
plot(t,dem);
title('无噪声的解调信号')y1=awgn(Sdsb,20,'measured');
y2=y1.*cos(2*pi*fc*t);
Y2=fft(y2)./fs;
DEM1=Y2.*Hlow;
dem1=real(ifft(DEM1))*fs;
subplot(3,1,3)
plot(t,dem1)
title('信噪比为20dB时的解调信号')
在构建低通滤波器时,思路如下(pi处是高频,2pi处是低频)




clear all
ts=0.0025;
t=0:ts:10-ts;
fs=1/ts;
df=fs/length(t);
f=-fs/2:df:fs/2-df;
msg=randi([-3,3],100,1);%生成消息序列
msg1=msg*ones(1,fs/10);%扩展成取样信号的形式
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;
f=-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))
title('消息信号的频谱')fc=100;%载波频率
Sdsb=msg2.*cos(2*pi*fc*t);%DSB信号
Pdsb=fft(Sdsb)/fs;%DSB信号频谱f_stop=100;%低通滤波器的截止频率
n_stop=floor(f_stop/df);%floor向下取整函数
Hlow=zeros(size(f));%设计低通滤波器
Hlow(1:n_stop)=1;
Hlow(length(f)-n_stop+1:end)=1;
Plssb=Pdsb.*Hlow;%LSSB信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Plssb)))
title('已调信号频谱')
axis([-200 200 0 2])Slssb=real(ifft(Plssb))*fs;
Pc=sum(abs(Slssb).^2)/length(Slssb)%已调信号功率
Ps=sum(abs(msg2).^2)/length(msg2)%消息信号功率
这次的代码是用滤波法实现单边带信号的,滤波的思路如下图



clear all
ts=0.0025;
t=0:ts:10-ts;
fs=1/ts;
df=fs/length(t);
f=-fs/2:df:fs/2-df;
msg=randi([-3,3],100,1);%生成消息序列
msg1=msg*ones(1,fs/10);%扩展成取样信号的形式
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;
f=-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))
title('消息信号的频谱')fc=100;
s1=0.5.*msg2.*cos(2*pi*fc*t);%DSB信号
hmsg=imag(hilbert(msg2));%imag返回虚部
s2=0.5*hmsg.*sin(2*pi*fc*t);
Sussb=s1-s2;
Pussb=fft(Sussb)/fs;
subplot(2,1,2)
plot(f,fftshift(abs(Pussb)))
title('USSB信号频谱')
axis([-200 200 0 2])Pc=sum(abs(Sussb).^2)/length(Sussb)
Ps=sum(abs(msg2).^2)/length(msg2)
这里hilbert取虚部的原因是因为,matlab中的hilbert变换是返回一个复数序列,其实部是原序列,而虚部才是要求的Hilbert变换。

clear all
ts=0.0025;
t=0:ts:5-ts;
fs=1/ts;
df=fs/length(t);
f=-fs/2:df:fs/2-df;
msg=randi([-3,3],10,1);%生成消息序列
msg1=msg*ones(1,fs/2);%扩展成取样信号的形式
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;
f=-fs/2:df:fs/2-df;
subplot(3,1,1)
plot(t,msg2)
title('消息信号的频谱')fc=300;
s1=0.5.*msg2.*cos(2*pi*fc*t);%DSB信号
hmsg=imag(hilbert(msg2));%imag返回虚部
s2=0.5*hmsg.*sin(2*pi*fc*t);
Sussb=s1-s2;
y=Sussb.*cos(2*pi*fc*t);
Y=fft(y)./fs;
f_stop=100;
n_stop=floor(f_stop/df);
Hlow=zeros(size(f));
Hlow(1:n_stop)=4;
Hlow(length(f)-n_stop+1:end)=4;
DEM=Y.*Hlow;
dem=real(ifft(DEM))*fs;
subplot(3,1,2)
plot(t,dem);
title('无噪声的解调信号')y1=awgn(Sussb,20,'measured');
y2=y1.*cos(2*pi*fc*t);
Y2=fft(y2)./fs;
DEM1=Y2.*Hlow;
dem1=real(ifft(DEM1))*fs;
subplot(3,1,3)
plot(t,dem1)
title('信噪比为20dB时的解调信号')

与DSB解调思路相同 ,都是相干解调后经过低通滤波器,取实部
相关文章:
matlab仿真 模拟调制(上)
(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容,有兴趣的读者请阅读原书) 1.幅度调制 clear all ts0.0025; %信号抽样时间间隔 t0:ts:10-ts;%时间矢量 fs1/ts;%抽样频率 dffs/length(t); %fft的频率分…...
【数据结构】--- 堆的应用
个人主页:星纭-CSDN博客 系列文章专栏 :数据结构 踏上取经路,比抵达灵山更重要!一起努力一起进步! 一.堆排序 在前一个文章的学习中,我们使用数组的物理结构构造出了逻辑结构上的堆。那么堆到底有什么用呢&…...
0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)
项目简介: 小李哥今天将继续介绍亚马逊云科技AWS云计算平台上的前沿前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS上的AI软甲开发最佳实践,并应用到自己的日常工作里。本次介绍的是如何在Amazon SageMaker上…...
护网HW面试——redis利用方式即复现
参考:https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法,讲到ssrf那么就会讲到配合打内网的redis,本篇就介绍redis的打法。 未授权 原理: Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关…...
C++ //练习 15.8 给出静态类型和动态类型的定义。
C Primer(第5版) 练习 15.8 练习 15.8 给出静态类型和动态类型的定义。 环境:Linux Ubuntu(云服务器) 工具:vim 解释 静态类型:在编译时已知,是在变量声明时的类型或表达式生成的…...
阿里云ECS服务器安装jdk并运行jar包,访问成功详解
安装 OpenJDK 8 使用 yum 包管理器安装 OpenJDK 8 sudo yum install -y java-1.8.0-openjdk-devel 验证安装 安装完成后,验证 JDK 是否安装成功: java -version设置 JAVA_HOME 环境变量: 为了确保系统中的其他应用程序可以找到 JDK&…...
Windows系统上使用npm来安装和配置Yarn,在VSCode中使用
一、安装Yarn 1. 安装Node.js和npm 如果还没有安装Node.js和npm,可以从Node.js官方网站下载并安装最新版本的Node.js,npm会随Node.js一起安装。 2. 使用npm安装Yarn 打开命令提示符或PowerShell,运行以下命令来全局安装Yarn: …...
Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理
Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理 目录 Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理 一、简单介绍 二、在Unity中设置颜色空间 三、Unity中的Gamma…...
JavaScript的学习(二)
今天继续学习JavaScript的第二天,还是打基础 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…...
【接口自动化_06课_Pytest+Excel+Allure完整框架集成】
一、logging在接口自动化里的应用 1、设置日志的配置,并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…...
Profibus协议转Profinet协议网关模块连接智能电表通讯案例
一、背景 在工业自动化领域,Profibus协议和Profinet协议是两种常见的工业通讯协议,而连接智能电表需要用到这两种协议之间的网关模块。本文将通过一个实际案例,详细介绍如何使用Profibus转Profinet模块(XD-PNPBM20)实…...
【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离
引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…...
acrobat 中 PDF 复制时不能精确选中所选内容所在行的一种解决方法
现象:划取行的时候,自动扩展为多行 如果整段选中复制,粘贴后是乱码 解决步骤 识别完,保存 验证 可以按行复制了。 如果遇到仅使用 acrobat OCR 不能彻底解决的,更换其他自己熟悉的进行 OCR。...
安卓学习中遇到的问题【bug】
安卓学习中遇到的问题 1Gradle下载慢怎么办? Gradle下载慢怎么办? distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5-bin.zip 2 Could not resolve all files for configuration ‘:classpath‘. > Could not resolv…...
【日常记录】【CSS】display:inline 的样式截断
文章目录 1. 案例2. css属性:box-decoration-break参考地址 1. 案例 现在有一篇文章,某些句子,是要被标记的,加一些css 让他突出一下 可以看到,在最后,断开了,那如若要让 断开哪里的样式 和 开始…...
数据库系统安全
数据库安全威胁 数据库作为信息系统中的核心组成部分,存储和管理着大量敏感和关键的数据,成为网络攻击者的主要目标之一。以下是常见的数据库安全威胁及其详细描述: 一、常见数据库安全威胁 SQL注入攻击(SQL Injectionÿ…...
Qt MV架构-代理模型
一、基本概念 代理模型可以将一个模型中的数据进行排序或者过滤,然后提供给视图进行显示。 Qt中提供了QSortFilterProxyModel作为标准的代理模型来完成模型中数据的排序和过滤。 要使用一个代理模型,则只需要为其设置源模型,然后再视图中使…...
WebSocket实现群聊功能、房间隔离
引用WebSocket相关依赖 <dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1</version></dependency><dependency><groupId>org.springframework</grou…...
顶顶通呼叫中心中间件实现随时启动和停止质检(mod_cti基于FreeSWITCH)
文章目录 前言联系我们拨号方案启动停止ASR执行FreeSWITCH 命令接口启动ASR接口停止ASR接口 通知配置cti.json配置质检结果写入数据库 前言 顶顶通呼叫中心中间件的实时质检功能是由两个模块组成:mod_asr 和 mod_qc。 mod_asr:负责调用ASR将用户们在通…...
基于conda包的环境创建、激活、管理与删除
Anaconda是一个免费、易于安装的包管理器、环境管理器和 Python 发行版,支持平台包括Windows、macOS 和 Linux。下载安装地址:Download Anaconda Distribution | Anaconda 很多不同的项目可能需要使用不同的环境。例如某个项目需要使用pytorch1.6&#x…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
