matlab仿真 通信信号和系统分析(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真   刘学勇编著第三章内容,有兴趣的读者请阅读原书)

一、求离散信号卷积和

主要还是使用卷积函数conv,值得注意的是,得到的卷积和长度结果为81,是两个原始序列长度相加-1(41+41-1);

 二、连续时间信号的傅里叶变换

使用函数fourier和函数ifourier进行傅里叶变换和傅里叶变换,可以注意到,将变量符号化后可以直接得到傅里叶变换后的数学表达式。

clear all;
syms t;%调用函数fourier和ifourier需要使用syms命令对涉及到的变量进行说明,将其说明为符号变量
f=t*exp(-abs(t));
subplot(1,2,1);ezplot(f);%函数fourier和ifourier得到的返回函数仍然是符号表达式,作图应使用ezplot函数(有冲激函数ezplot无法使用)
F=fourier(f)
subplot(1,2,2);ezplot(abs(F));%abs(F)用来做幅频特性的图像

clear all;
syms t w;%在反变换中涉及到了t和w两个变量,都需要符号化
F=pi*exp(-abs(w));
subplot(1,2,1);ezplot(abs(F));%频谱图
f=ifourier(F,t)%ifourier默认返回是关于x的函数,这里指定为返回t的函数
subplot(1,2,2);ezplot(f);%时域图

 此题中是周期信号,不可积分,所以无法使用傅里叶变换,所以采用傅里叶级数进行求解

 

这题中我们是使用手动积分算出傅里叶级数的表达式后直接对表达式进行画图的,个人理解是因为无穷长的信号在matlab中表示较为复杂,所以反而是手动求解更快。

三、离散时间信号的傅里叶变换

clear all;
w=-1:0.001:1;%产生数字频率的范围,这里的单位长度是pi,所以只计算了[-pi,pi]范围内的DTFT
n=0:20;%离散序列的时间范围,0<n<20;
h(n+1)=1;%构造信号h(n)=1,这里n+1的理由是matlab数组都是从1开始计算的,数组索引必须为正整数或逻辑值。
x=h.*exp(j*pi*n/4);%构造信号x(n);
Hjw=h*(exp(-j*pi).^(n'*w));%dtft公式,这里n'*w是利用数字频率和时间范围构造了一个矩阵,之后将矩阵与-j*pi
%相乘后进行exp运算,最后将表达式与数字序列相乘,得到数字序列的DTFT值
Xjw=x*(exp(-j*pi).^(n'*w));
subplot(2,2,1);plot(w,abs(Hjw));
title('H');xlabel('pi弧度(w)');ylabel('振幅')
subplot(2,2,2);plot(w,angle(Hjw/pi));%用angle绘制相位图,除以pi是因为以pi弧度为单位的
title('H');xlabel('pi弧度(w)');ylabel('相位')
subplot(2,2,3);plot(w,abs(Xjw));
title('H');xlabel('pi弧度(w)');ylabel('振幅')
subplot(2,2,4);plot(w,angle(Xjw/pi));
title('H');xlabel('pi弧度(w)');ylabel('相位')

clear all;
w=-1:0.001:1;%产生数字频率的范围,这里的单位长度是pi,所以只计算了[-pi,pi]范围内的DTFT
n=0:30;%离散序列的时间范围,0<n<30;
h=sinc(0.2*n);
x=2*sin(0.2*pi*n)+3*cos(0.4*pi*n);
Hjw=h*(exp(-j*pi).^(n'*w));
Xjw=x*(exp(-j*pi).^(n'*w));
Yjw=Xjw.*Hjw;%这里是第一种方法,通过DTFT求出x和h信号的傅里叶变换然后相乘,得到了输出响应y的频域表达
n1=0:2*length(n)-2;%这里卷积之后的长度等于用于卷积的序列长度相加-1(n+n-1)
dw=0.001*pi;%确定分段求和的步长
y=(dw*Yjw*(exp(j*pi).^(w'*n1)))/(2*pi);%通过y的频域表达得到y的时域表达,需要用到IDTFT,由于IDTFT公式中用到了积分,这里使用
%分段求和代替积分,步长等于相邻频域的间隔,因为w=-1:0.001:1;,所以步长是0.001*pi。求和中和DTFT思路一致,都是用w'*n1
%两个参数构造的矩阵实现的y1=conv(x,h);%这是第二种方法,时域卷积,第一种是频域相乘,总结来说,就是时域卷积等价于频域相乘。
subplot(3,1,1);plot(w,abs(Hjw));
title('H');xlabel('pi弧度(w)');ylabel('振幅');
subplot(3,1,2);plot(w,abs(Xjw));
title('X');xlabel('pi弧度(w)');ylabel('振幅');
subplot(3,1,3);plot(w,abs(Yjw));
title('Y');xlabel('pi弧度(w)');ylabel('振幅');  figure
subplot(2,1,1);stem(abs(y));title('通过IDTFT计算出的输出序列Y');
subplot(2,1,2);stem(abs(y1));title('通过时域卷积计算出的输出序列Y1');

这里有一个有意思的点,就是第9行的n1是从0开始的,但是在例3.10中的第4行h(n+1)中n+1是从1开始的,这是因为h(n+1)中是明确把n+1当做h的索引值了,只有正整数才能作为数组的索引值,而本例中只有利用n进行乘法运算,没有当做索引值,所以可以从0开始。

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

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

相关文章

Windows USB设备驱动开发 - 常见概念的解释

我们听到许多 USB 术语几乎交替抛出。 它们都是什么意思&#xff1f;假设我们看到类似 “多亏了 USB 3.0&#xff0c;我可以将 SuperSpeed U 盘连接到电脑的 xHCI 主机控制器&#xff0c;并更快地复制文件。” 让我们了解该句子中的 USB 术语。 USB 3.0、USB 2.0 和 USB 1.0 请…

[深度学习] 自编码器Autoencoder

自编码器&#xff08;Autoencoder&#xff09;是一种无监督学习算法&#xff0c;主要用于数据的降维、特征提取和数据重建。自编码器由两个主要部分组成&#xff1a;编码器&#xff08;Encoder&#xff09;和解码器&#xff08;Decoder&#xff09;。其基本思想是将输入数据映射…

Redis 7.x 系列【9】数据类型之自动排重集合(Set)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SADD2.2 SCARD2.3 SISMEMBER2.4 SREM2.5 SSCAN2.6 SDIFF2.7 SU…

海云安参编《数字安全蓝皮书 》正式发布并入选《2024中国数字安全新质百强》荣膺“先行者”

近日&#xff0c;国内数字化产业第三方调研与咨询机构数世咨询正式发布了《2024中国数字安全新质百强》&#xff08;以下简称百强报告&#xff09;。海云安凭借在开发安全领域的技术创新力及市场影响力入选百强报告“新质百强先行者” 本次报告&#xff0c;数世咨询经过对国内8…

以算筑基,以智赋能 | Gooxi受邀出席2024中国智算中心全栈技术大会

6月25日&#xff0c;2024中国智算中心全栈技术大会暨展览会、第5届中国数据中心绿色能源大会暨第10届中国&#xff08;上海&#xff09;国际数据中心产业展览会在上海新国际博览中心隆重召开。Gooxi受邀参与并携最新服务器产品以及解决方案亮相展会&#xff0c;吸引众多行业领袖…

C++学习/复习18----迭代器/反向迭代器及在list/vector中的应用、list与vector模拟实现复习

迭代器是一个对象&#xff0c;可以循环访问 C 标准库容器中的元素&#xff0c;并提供对各个元素的访问。 C 标准库容器全都提供迭代器&#xff0c;以便算法可以采用标准方式访问其元素&#xff0c;而不必考虑用于存储元素的容器类型。 一、反向迭代器类 基于普通迭代器构建反…

亚太杯赛题思路发布(中文版)

导读&#xff1a; 本文将继续修炼回归模型算法&#xff0c;并总结了一些常用的除线性回归模型之外的模型&#xff0c;其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…

Java进阶-try-with-resources

Java进阶-try-with-resources try-with-resources 是什么传统使用try-catch-finally关闭资源使用try-with-resources什么时候用 try-with-resources 是什么 try-with-resources 是 Java 7 中引入的一个新特性&#xff0c;用于简化资源管理&#xff0c;一般是用于处理实现了 Au…

大模型+多模态合规分析平台,筑牢金融服务安全屏障

随着金融市场的快速发展&#xff0c;金融产品和服务日趋多样化&#xff0c;消费者面临的风险也逐渐增加。 为保护消费者权益&#xff0c;促进金融市场长期健康稳定发展&#xff0c;国家监管机构不断加强金融监管&#xff0c;出台了一系列法律法规和政策文件。对于金融从业机构…

设计模式-状态模式和策略模式

1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为&#xff1b; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…

对原生input加上:当前输入字数/最大输入字数

源码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 样式…

商城自动化测试实战 —— 登录+滑块验证

hello大家好&#xff0c;我是你们的小编&#xff01; 本商城测试项目采取PO模型和数据分离式架构&#xff0c;采用pytestseleniumjenkins结合的方式进行脚本编写与运行&#xff0c;项目架构如下&#xff1a; 1、创建项目名称&#xff1a;code_shopping&#xff0c;创建所需项目…

常微分方程算法之编程示例五(阿当姆斯法)

目录 一、研究问题 二、C++代码 三、计算结果 一、研究问题 本节我们采用阿当姆斯法(Adams法)求解算例。 阿当姆斯法的原理及推导请参考: 常微分方程算法之阿当姆斯法(Adams法)_四步四阶adams显格式;三步四阶adams隐格式;四阶adams预估-校正格式-CSDN博客https://blog…

Linux系统编程--进程间通信

目录 1. 介绍 1.1 进程间通信的目的 1.2 进程间通信的分类 2. 管道 2.1 什么是管道 2.2 匿名管道 2.2.1 接口 2.2.2 步骤--以父子进程通信为例 2.2.3 站在文件描述符角度-深度理解 2.2.4 管道代码 2.2.5 读写特征 2.2.6 管道特征 2.3 命名管道 2.3.1 接口 2.3.2…

Nginx中封装的数据结构

Nginx中封装的数据结构 Nginx中封装的数据结构整型ngx_str_t【字符串】ngx_list_t【链表】ngx_table_elt_t【key/value】ngx_buf_tngx_chain_t Nginx中封装的数据结构 整型 typedef intptr_t ngx_int_t; typedef uintptr_t ngx_uint_t;ngx_str_t【字符串】 typ…

【面试题】信息系统安全运维要做什么

信息系统安全运维是确保信息系统稳定、可靠、安全运行的一系列活动和措施。 其主要包括以下几个方面&#xff1a; 1.系统监控&#xff1a; 实时监测信息系统的运行状态&#xff0c;如服务器的性能指标、网络流量、应用程序的运行情况等。通过监控工具&#xff0c;及时发现系统…

What does the error ‘module ‘langchain‘ has no attribute ‘verbose‘ refer to?

题意&#xff1a;错误 module langchain has no attribute verbose 指的是什么意思&#xff1f; 问题背景&#xff1a; Kind of new to Langchain/Qdrant but Im building a recommendation engine to recommend users based on the contents of their associated PDF files, …

typora取消源代码模式

如果typora不小心设置成了源代码模式 关闭源代码模式&#xff1a;

Django-开发一个列表页面

需求 基于ListView,创建一个列表视图,用于展示"BookInfo"表的信息要求提供分页提供对书名,作者,描述的查询功能 示例展示: 1. 数据模型 models.py class BookInfo(models.Model):titlemodels.CharField(verbose_name"书名",max_length100)authormode…

git 用户名密码Clone代码

#密码中包含&#xff0c;则使用%40代表 cd /disk03/wwwroot/GitDemo/BuildTemp && git clone -b dev --single-branch http://root:test%40123192.168.31.104/root/SaaS.Auto.Api.git git pull origin dev 今天使用LibGit2Sharp在Linux上Clone代码时报错&#xff0c;因…