MATLAB实现振幅调制(AM调制信号)

AM调制是通信专业非常重要的一个知识点。今天我们使用MATLAB编程实现AM调制。

我们实现输入一个载波信号的频率与调制信号的频率后,再输入调幅度,得到已调信号的波形与包络信号的波形,再使用FFT算法分析出已调信号的频谱图。

源代码:

调制函数的编写:

function AM_modulation(m, fm, fc)% 参数设置fs = 10*fc;       % 自适应采样频率(满足奈奎斯特准则)T = 2;            % 信号持续时间(秒)t = 0:1/fs:T-1/fs; % 时间向量% 验证调制参数合理性if m < 0error('调制指数不能为负数');endif fm >= fcwarning('调制频率接近或超过载波频率可能影响调制效果');end% 生成调制信号和已调信号modulating_signal = m * cos(2*pi*fm*t);carrier = cos(2*pi*fc*t);am_signal = (1 + modulating_signal) .* carrier;envelope = 1 + modulating_signal;envelope1 = -(1 + modulating_signal);% 绘制时域波形(增强可视化)figure('Name','AM调制时域分析','NumberTitle','off');ax1 = subplot(2,1,1);plot(t, am_signal, 'Color', [0 0.4470 0.7410], 'LineWidth', 1.2);hold on;plot(t, envelope, 'r--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);plot(t, envelope1, 'r--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);title(['AM时域波形  m=', num2str(m), ', f_m=', num2str(fm), 'Hz, f_c=', num2str(fc), 'Hz']);xlabel('时间 (s)');ylabel('幅度');legend('已调信号','理论包络','Location','best');grid on;xlim([0 3/fm]);  % 显示3个调制周期% 局部放大观察细节ax2 = subplot(2,1,2);plot(t, am_signal, 'Color', [0 0.4470 0.7410], 'LineWidth', 1.2);hold on;plot(t, envelope, '--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);plot(t, envelope1, '--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);title('局部放大');xlabel('时间 (s)');ylabel('幅度');xlim([0 1/fm]);  % 显示1个调制周期grid on;linkaxes([ax1,ax2],'y');  % 同步纵坐标范围% 高级频谱分析(手动实现FFT)N = length(am_signal);fft_data = zeros(1,N);% 离散傅里叶变换实现for k = 1:N/2+1cos_term = cos(2*pi*(k-1)*(0:N-1)/N);sin_term = -sin(2*pi*(k-1)*(0:N-1)/N);fft_data(k) = sum(am_signal.*(cos_term + 1i*sin_term));endP2 = abs(fft_data/N);P1 = P2(1:N/2+1);P1(2:end-1) = 2*P1(2:end-1);f = fs*(0:(N/2))/N;% 频谱可视化(动态范围调整)figure('Name','AM频谱分析','NumberTitle','off');stem(f, P1, 'filled', 'MarkerSize',4, 'Color',[0.6350 0.0780 0.1840]);title(['信号频谱  f_c=',num2str(fc),'±',num2str(fm),'Hz']);xlabel('频率 (Hz)');ylabel('幅度');grid on;% 自动设置频率显示范围freq_span = max(10*fm, 2*fc);  % 自适应频率范围xlim([max(0,fc-3*fm) fc+3*fm]);xticks(unique([fc-fm, fc, fc+fm, linspace(fc-3*fm,fc+3*fm,5)]));% 标注主要频率成分hold on;[~,idx] = max(P1);text(f(idx), P1(idx), sprintf('%.1fHz\n%.2f',f(idx),P1(idx)),...'VerticalAlignment','bottom');annotation('textbox',[0.15 0.7 0.2 0.1],'String',...sprintf('频率分辨率:%.2fHz',fs/N),'EdgeColor','none');
end

脚本的编写:

% 常规调制
input_m=input('请输入调制指数:');
input_fm=input('请输入调制信号频率:');
input_fc=input('请输入载波信号频率:');
AM_modulation(input_m, input_fm, input_fc)

导出图片

输入参数后,生成相应的波形:

 

导出包络波形和调制波形:

导出的频谱图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JJJ:linux ida

文章目录 1.总结2.各类函数2.1 分配一个仓库2.2 销毁仓库2.3 从仓库里面分配一个整数id2.4 将上面分配的整数id从仓库里面删除2.5 在指定范围内分配一个id 1.总结 ida使用起来很简单&#xff0c;就是先分配一个仓库一样的实例&#xff0c;再从这个仓库里面分配一个独一无二的整…

FastByteArrayOutputStream和ByteArrayInputStream有什么区别

FastByteArrayOutputStream 和 ByteArrayInputStream 是两种完全不同的 Java I/O 类&#xff0c;它们的主要区别体现在 设计目的 和 使用场景 上。以下是详细对比&#xff1a; 1. 核心区别总结 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所属…

docker-compose——安装redis

文章目录 一、编写docker-compose.yaml文件二、编写redis.conf文件三、启动docker-compose 一、编写docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…

东芝推出新的SCiB模块,散热性能加倍,适用于电动公交车、电动船舶和固定应用

东京—东芝公司推出了一种新的SCiB模块&#xff0c;这是一种专为电动汽车、电动船舶和固定应用而设计的锂离子电池。新产品采用铝制底板&#xff0c;散热量约为当前模块的两倍。它将于2025年4月中旬在日本和全球上市。 锂离子电池的使用越来越多&#xff0c;而且越来越多样化&a…

【进程控制二】进程替换和bash解释器

【进程控制二】进程替换 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2总结 4.实现一个bash解释器4.1内建命令 通过fork创建的子进程&#xff0c;会继承父进程的代码和数据&#xff0c;因此本质上还是在执行父进程的代码 进程替换可以将…

Java基础语法之数组

数组 一、认识数组 1.什么是数组 数组就是一个容器&#xff0c;用来存一批同种类型的数据。 举例 20, 10, 80, 60, 90 int[] arr {20, 10, 80, 60, 90};张三, 李四, 王五 String[] names {"张三", "李四", "王五"};2.为什么要使用数组 假设…

Java死锁排查:线上救火实战指南

想象一下&#xff0c;你正在值班&#xff0c;突然监控告警红成一片&#xff0c;用户反馈雪花般飘来&#xff1a;“系统卡死了&#xff01;用不了了&#xff01;” —— 这很可能就是Java应用遭遇了“死锁”这个大魔王。这时候&#xff0c;你就是救火队长&#xff0c;首要任务不…

006-nlohmann/json 结构转换-C++开源库108杰

绝大多数情况下&#xff0c;程序和外部交换的数据&#xff0c;都是结构化的数据。 1. 手工实现——必须掌握的基本功 在的业务类型的同一名字空间下&#xff0c;实现 from_json 和 to_json 两个自由函数&#xff08;必要时&#xff0c;也可定义为类型的友元函数&#xff09;&a…

白盒测试——基本路径测试法

一、实验名称 白盒测试——基本路径测试法 二、实验目的 白盒测试是结构测试&#xff0c;是依据被测程序的内部逻辑结构设计测试用例&#xff0c;驱动被测程序运行完成的测试&#xff0c;通过本实验希望&#xff1a; 1、掌握基本路径测试法的基本概念&#xff0c;用具体的例子…

【嵌入模型与向量数据库】

目录 一、什么是向量&#xff1f; 二、为什么需要向量数据库&#xff1f; 三、向量数据库的特点 四、常见的向量数据库产品 FAISS 支持的索引类型 vs 相似度 五、常见向量相似度方法对比 六、应该用哪种 七、向量数据库的核心逻辑 &#x1f50d; 示例任务&#xff1a;…

matlab中和三角函数相关的内容

和三角相关的函数 以下内容为Ai输出 函数描述示例sin(x)正弦函数&#xff0c;返回x的正弦值&#xff0c;x单位为弧度sin(pi/2)cos(x)余弦函数&#xff0c;返回x的余弦值&#xff0c;x单位为弧度cos(pi)tan(x)正切函数&#xff0c;返回x的正切值&#xff0c;x单位为弧度tan(pi…

scratch基础-外观模块

一、本次任务 二、内容详解 1、模块介绍 1、说[你好] (2)秒&#xff1a;临时对话框&#xff0c;短暂对话 2、说[你好]&#xff1a;持续显示对话框&#xff0c;长文本显示 3、思考[嗯…] (2)秒&#xff1a;临时显示思考气泡&#xff0c;用于角色思考 4、思考[嗯…] &#xff1a…

TAOCMS漏洞代码学习及分析

路由规则 分为前台和后台&#xff0c; 前台在api.php中 <?php session_start(); include(config.php); include(SYS_ROOT.INC.common.php); $ctrl$_REQUEST[ctrl]; $action$_REQUEST[action]; $mucfirst($action); if(!in_array($m,array(Api,Comment)))d…

Spring @Scheduled注解详解

文章目录 1.Scheduled注解定义2.配置 Scheduled2.1 开启定时任务支持2.2 创建定时任务 3. 常用属性3.1 fixedRate3.2 fixedDelay3.3 cron 4.工作原理4.1 基于TaskScheduler4.2 使用 ThreadPoolTaskScheduler4.3 定时任务的执行流程 5. 延时执行的定时任务5.1 创建定时任务类5.2…

理解计算机系统_并发编程(5)_基于线程的并发(二):线程api和基于线程的并发服务器

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续上一篇理解计算机系统_并发编程(4)_基于线程的并发(一…

使用PhpStudy搭建Web测试服务器

一、安装PhpStudy 从以下目录下载PhpStudy安装文件 Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 安装成功之后打开如下界面 点击启动Apache 查看网站地址 在浏览器中输入localhost:88,出现如下页面就ok了 二、与Unity交互 1.配置下载文件路径&#xff0c;点击…

cocos creator 3.8 下的 2D 改动

在B站找到的系统性cocos视频教程,纯2D开发入门,链接如下: zzehz黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator JavaScript&#xff09;_哔哩哔哩_bilibili黑马程序员6天实战游戏开发微信小程序&#xff08;Cocos2d的升级版 CocosCreator Ja…

【Hot 100】208. 实现 Trie (前缀树)

目录 引言实现 Trie (前缀树)我的解题代码解析代码思路分析优化建议1. 内存泄漏问题2. 使用智能指针优化内存管理3. 输入合法性校验&#xff08;可选&#xff09;4. 其他优化 总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1…

Unity3D仿星露谷物语开发42之粒子系统

1、目标 使用例子系统&#xff0c;实现割草后草掉落的特效。 通过PoolManager获取特效预制体&#xff0c;通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…

视觉-语言基础模型作为高效的机器人模仿学习范式

摘要 近期&#xff0c;视觉语言基础模型领域取得的进展彰显了其在理解多模态数据以及解决复杂视觉语言任务&#xff08;包括机器人操作任务&#xff09;方面的能力。我们致力于探寻一种简便的方法&#xff0c;利用现有的视觉语言模型&#xff08;VLMs&#xff09;&#xff0c;仅…