Matlab通信仿真系列——信号的傅里叶(Fourier)分析

2023-11-28 11:12

本文主要是介绍Matlab通信仿真系列——信号的傅里叶(Fourier)分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、连续信号傅里叶变换
1、定义
2、fourier和ifourier函数
3、傅里叶级数
4、X(kΩ0)和X()
二、离散信号的傅里叶变换
1、定义
2、Matlab频谱图绘制
3、Matlab验证DTFT的频移
4、Matlab验证的DTFT卷积性质
5.Matlab验证DFT的卷积性质
三、Matlab源码
1、fourier和ifourier函数源码
2、Matlab频谱图绘制源码
3、Matlab验证DTFT的频移源码
4、Matlab验证的DTFT卷积性质源码
5、Matlab实现DFT和IDFT运算
6、Matlab验证DFT的卷积性质源码

本节内容
信号的傅里叶Fourier分析包括了连续信号傅里叶变换、离散信号的傅里叶变换。
一、连续信号傅里叶变换
1、定义

设x(t)为连续时间信号,如果x(t)绝对可积,即
在这里插入图片描述
则x(t)的傅里叶变换存在,并定义为
在这里插入图片描述
其反变换为
在这里插入图片描述
上述式中Ω=2πf,单位为rad/s
X(JΩ)=|X(JΩ)|e^(Jφ(Ω)),其中|X(JΩ)|表示幅频特性,φ(Ω)表示相频特性。
2、fourier和ifourier函数
Matlab中提供了求解傅里叶变换及其逆变换的函数
F=fourier(f)表示函数f的傅里叶变换,返回的是关于ω的函数。
f=ifourier(F)表示函数F的逆变换,默认的独立变量是ω,返回的是关于x的函数。
在使用fourier和ifourier函数之前,必须用syms命令对所用的变量进行符合说明。同时返回得到的函数仍是符合变量,因此应用ezplot绘图。
在这里插入图片描述
在这里插入图片描述

3、傅里叶级数
只有非周期信号才有傅里叶变换。
若x(t)满足狄利克雷条件,可以将其展开为傅里叶级数,
在这里插入图片描述

式中Ω0=2πf0,表示信号x(t)的基波频率;kΩ0为第k次谐波频率;
X(kΩ0)表示x(t)在k次谐波处的傅里叶级数,幅度表示信号x(t)所包含的频率为kΩ0的成分大小。
周期信号x(t)可以由无数的复正弦{e^(jkΩ0t),k=0,±1,…,±∞}作为基本信号再乘以不同的加权值X(kΩ0)复合而成。X(kΩ0)是频率kΩ0相应复正弦的幅度。
X(kΩ0)仅在k=0,±1,…,±∞取值,故在频率轴上为离散值,
在这里插入图片描述
X(kΩ0)用复数表示为
在这里插入图片描述
|X(k)|表示频率为nf0的分量的振幅;θk表示频率为nf0的分量的相位。
4、X(kΩ0)和X(jΩ)
X(kΩ0)是Ω轴上的离散函数,取Ω的整数倍;X(jΩ)是Ω的连续函数。
X(kΩ0)是谐波振幅的表述;X(jΩ)是频谱密度的表述。
二、离散信号的傅里叶变换
1、定义

离散信号h(n)为线性时不变系统的单位抽样响应,且绝对可和的,即满足
在这里插入图片描述

系统的频率响应,即离散时间序列的傅里叶变换DTFT为:
在这里插入图片描述

傅里叶逆变换IDTFT为:
在这里插入图片描述

其中H(e^(jω))是ω的周期为2π的连续周期函数,ω表示弧度,数字频率。
在这里插入图片描述
2、Matlab频谱图绘制

matlab代码示例:
①求序列h1(n)=e^(-|0.1n|)的离散傅里叶变换,
其中-15≤n≤15
②求序列h2(n)=1的离散傅里叶变换,
其中0≤n≤20
傅里叶变换参考上述的公式进行算,
需要留意“n1'”表示n1的转置。

在这里插入图片描述
在这里插入图片描述

3、Matlab验证DTFT的频移
离散时间信号的DTFT的频移性质,序列乘以复指数序列对应于频域的频移。
在这里插入图片描述

matlab代码示例:
①求序列h(n)=1的DTFT,其中0≤n≤20
②求序列x(n)=h(n)e^(jπn/4)
③求序列y(n)=h(n)e^(jπn/2)
x(n)是序列h(n)平移了π/4
y(n)是序列h(n)平移了π/2

4、Matlab验证的DTFT卷积性质
一个单位脉冲响应为h(n)的系统对输入序列x(n)的输出为y(n)=x(n)*h(n)
根据DTFT卷积性质可得:
Y(e^(jw))=DTFT[y(n)]
=DTFT[x(n)*h(n)]=X(e ^ (jw))×H(e ^ (jw))
在这里插入图片描述
在这里插入图片描述

5.Matlab实现DFT和IDFT运算
一个给定离散序列x(n),DFT对应在时域、频域上都是有限长,而且是离散的,该离散序列的DFT和IDFT:
在这里插入图片描述
其中W(N)=e^(-j×2π/N)
在这里插入图片描述
在这里插入图片描述

5、Matlab验证DFT的卷积性质
在Matlab中提供fft函数来计算有限离散序列的DFT。
DFT的循环卷积性质
设序列x(n),h(n)都是N点序列,其DFT分别为X(k),H(k),Y(k)
在这里插入图片描述
其中H为循环矩阵,或者循环卷积。
由第1行开始,依次向右移动一个元素,移出去的元素在下一行的最左边出现,即每一行都是h(0),h(N-1),……h(1)这N个元素依次移动生成的。
如果x(n)是M点序列,h(n)是L点序列,y(n)=x(n)*h(n),即y(n)使x(n)和h(n)的线性卷积,y(n)序列的点数为(M+L-1)
在这里插入图片描述
在这里插入图片描述

toeplitz函数的用法,可以用help toeplitz指令获取帮助。
在这里插入图片描述

二、Matlab源码
1、fourier和ifourier函数源码

clear all;
n=0:30;
x=sin(0.2*n).*exp(-0.1*n);
k=0:30;
N=31;
X=x*(exp(-j*2*pi/N).^(n'*k));
subplot(2,1,1);
stem(n,x);
title('x序列');
subplot(2,1,2);
stem(-15:15,[abs(17:end)abs(]);
title('X幅度');

2、Matlab频谱图绘制源码

clear all;
w=-4:0.001:4;   %设置频率w的范围,相邻数字频率之间间隔为0.001
n1=-15:15;          %h1(n)序列的范围
n2=0:20;            %h2(n)序列的范围
h1=exp(-abs(0.1*n1));
h2(n2+1)=1;
Hjw1=h1*(exp(-j*pi).^(n1'*w));   %h1(n)的傅里叶变换
Hjw2=h2*(exp(-j*pi).^(n2'*w));   %h2(n)的傅里叶变换
subplot(2,1,1);
plot(w,abs(Hjw1))
title('h1');
xlabel('pi弧度(w)');
ylabel('振幅');
subplot(2,1,2);
plot(w,abs(Hjw2));
title('h2');
xlabel('pi弧度(w)');
ylabel('振幅');

3、Matlab验证DTFT的频移源码

clear all;
w=-1:0.001:1;
n=0:20;
h(n+1)=1;
x=h.*exp(j*pi*n/4);
y=h.*exp(j*pi*n/2);
Hjw=h*(exp(-j*pi).^(n'*w));
Xjw=x*(exp(-j*pi).^(n'*w));
Yjw=y*(exp(-j*pi).^(n'*w));
subplot(3,2,1);
plot(w,abs(Hjw))
title('H');
xlabel('pi弧度(w)');
ylabel('振幅');
subplot(3,2,2);
plot(w,angle(Hjw)/pi);
title('H');
xlabel('pi弧度(w)');
ylabel('相位');
subplot(3,2,3);
plot(w,abs(Xjw))
title('X');
xlabel('pi弧度(w)');
ylabel('振幅');
subplot(3,2,4);
plot(w,angle(Xjw)/pi);
title('X');
xlabel('pi弧度(w)');
ylabel('相位');
subplot(3,2,5);
plot(w,abs(Yjw))
title('Y');
xlabel('pi弧度(w)');
ylabel('振幅');
subplot(3,2,6);
plot(w,angle(Yjw)/pi);
title('Y');
xlabel('pi弧度(w)');
ylabel('相位');

4、Matlab验证的DTFT卷积性质源码

clear all;
w=-1:0.001:1;                             %频率w范围,以及间隔为0.001    
n=0: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));                  %脉冲响应的DTFT
Xjw=x*(exp(-j*pi).^(n'*w));                  %输入信号的DTFT
Yjw=Xjw.*Hjw;                           %输出信号的DTFT
n1=0:2*length(n)-2;                  %输出序列的长度
dw=0.001*pi;                            %分段求和的步长
y=(dw*Yjw*(exp(j*pi).^(w'*n1)))/(2*pi);         %分段求和方式代替积分
y1=conv(x,h);                           %时序卷积计算
subplot(3,1,1);
plot(w,abs(Hjw))
title('脉冲响应的DTFT');
xlabel('pi弧度(w)');
ylabel('振幅');
subplot(3,1,2);
plot(w,abs(Xjw));
title('输入信号的DTFT');
xlabel('pi弧度(w)');
ylabel('相位');
subplot(3,1,3);
plot(w,abs(Yjw))
title('输出信号的DTFT');
xlabel('pi弧度(w)');
ylabel('振幅');figure
subplot(2,1,1);
stem(abs(y));
title('IDTFT计算的输出序列Y');
subplot(2,1,2);
stem(abs(y1));
title('conv时域卷积计算的输出序列Y1');

5、Matlab实现DFT和IDFT运算

clear all;
n=0:30;
x=sin(0.2*n).*exp(-0.1*n);
k=0:30;
N=31;                               %离散蓄力DFT的个数
X=x*(exp(-j*2*pi/N).^(n'*k));       
subplot(2,1,1);
stem(n,x);
title('x序列');
subplot(2,1,2);
%验证DFT的对称性,将其范围修改
stem(-15:15,[abs(X(17:end)) abs(X(1:16))]); 
title('X幅度');
6、Matlab验证DFT的卷积性质源码clear all;
%矩阵的直接法卷积和DFT
h1=[6 3 4 2 1 -2];
x1=[3 2 4 7 -1 -3];
h2=fliplr(h1);                 %h1序列反转
H1=toeplitz(h1,[h1(1) h2(1:5)]);    %h1序列生成循环矩阵
y=H1*x1';                    %根据矩阵定义求解卷积H2=fft(h1);                   %fft函数求卷积
X1=fft(x1);                    
Y1=H2.*X1;
y1=ifft(Y1);
subplot(4,1,1);
stem(y);
title('矩阵的直接计算');
subplot(4,1,2);
stem(y1);
title('矩阵的DFT计算');%线性序列的直接法卷积和DFT
n3=0:20;
n4=0:10;
h3=sinc(0.2*n3);
x3=exp(-0.2*n4);
y3=conv(x3,h3);
%对序列h3和x3补零,构成新的序列h4和x4
h4=[h3 zeros(1,length(x3)-1)];
x4=[x3 zeros(1,length(h3)-1)];
H4=fft(h4);
X4=fft(x4);
Y4=H4.*X4;
y4=ifft(Y4);
subplot(4,1,3);
stem(y3);
title('线性序列的直接计算');
subplot(4,1,4);
stem(y4);
title('线性序列的DFT计算');

这篇关于Matlab通信仿真系列——信号的傅里叶(Fourier)分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429613

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud