【OFDM系列】DFT为什么能求频率幅度谱?DFT后的X[k]与x(n)幅度的关系?DFT/IDFT底层数学原理?

文章目录

    • 问题引入
    • 铺垫一些小公式
    • DFT公式证明
      • DFT公式分解为4部分
        • 先考虑k1=0的情况:
        • 再考虑k1≠0的情况:
      • DFT计算后,X(k)与x(n)的关系:
    • Matlab FFT示例代码
    • IDFT公式证明
    • Matlab调用FFT/IFFT并绘图

问题引入

在这里插入图片描述
上面是DFT和IDFT的公式,IDFT先不谈。在实践中常使用FFT算法来快速算出DFT,获得时域采样信号x(n)的频率幅度谱。
例如:

N=1500;
xn=0.5*sin(2*pi*75/N*n)+3*cos(2*pi*40/N*n)+0.7*sin(2*pi*350/N*n);

上面这个时域采样信号xn由三个频率叠加而成,我们知道频率的概念是1秒信号经过了多少个周期,
那么我们假设采样率是fs=1000,共采样N=1500点,那么0.5*sin(2*pi*75/N*n)的频率即为75*fs/N=50,因此第一个信号频率为50。

通过Matlab进行FFT,可以画出这样一张频率幅度谱:
在这里插入图片描述
这里就引申出我们的标题:DFT为什么能求频率幅度谱?DFT后的X[k]与x(n)幅度的关系?DFT/IDFT底层数学原理?
对于这个问题,我看了不少网上的博客、视频、书籍,总觉得讲的不清不楚,有人说X[k]的结果就是x(n)的幅度,有人说X[k]的结果除以N就是x(n)的幅度,有人说X[k]的结果除以N/2就是x(n)的幅度,就没有一个比较清楚的证明到底X[k]的值和x(n)幅度的关系。
如果你也对此有疑问,现在我证明给你看!

铺垫一些小公式

要看懂我的证明,首先需要铺垫一些小公式,防止你不知道!
在这里插入图片描述

DFT公式证明

我将公式的证明整理成了PPT,下面我直接复制,在证明中使用到了上面铺垫的小公式,注意关联起来看就可以理解了!

DFT公式分解为4部分

在这里插入图片描述

先考虑k1=0的情况:

在这里插入图片描述

再考虑k1≠0的情况:

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

DFT计算后,X(k)与x(n)的关系:

在这里插入图片描述
可以看到,DFT公式本质上可以完全拆成三角函数的计算,在此过程中利用
高中的积化和差公式三角函数在若干个周期的累加为0
可以得到X[k]和原信号x(n)幅度的关系。

Matlab FFT示例代码

下面我们给出使用FFT对x(n)进行DFT计算后,绘制频率幅度谱的Matlab代码,看官可以发现,这上述公式的X(k)结果是完全对应的!

%功能说明:
%生成时域采样信号0.5sin(2pi*k/N*n)
%通过fft转化到频域,绘制频率幅度谱,横坐标是频率f=k*fs/N,纵坐标是实际幅度
%再通过ifft转化回时域,绘制ifft结果信号,和原信号进行对比%采样率1000
fs=1000;%在N个采样点中,一共振动了k个周期
k=75;%采样总点数
N=1500;%n表示采样的第n个点
n=0:N-1;%xn是采样得到的x(n)时域信号
xn=0.5*sin(2*pi*k/N*n)+3*cos(2*pi*40/N*n)+0.7*sin(2*pi*350/N*n);xk=fft(xn);%abs是求模
P2=abs(xk/N);
P1=P2(1:N/2+1);
P1(2:end-1)=2*P1(2:end-1);%半频谱 f=k*fs/N
f=fs*(0:(N/2))/N;
plot(f,P1) 
title("Single-Sided Amplitude Spectrum of X(t)")
xlabel("f (Hz)")
ylabel("|P1(f)|")

IDFT公式证明

在这里插入图片描述

Matlab调用FFT/IFFT并绘图

%功能说明:
%生成时域采样信号0.5sin(2pi*k/N*n)
%通过fft转化到频域,绘制频率幅度谱,横坐标是频率f=k*fs/N,纵坐标是实际幅度
%再通过ifft转化回时域,绘制ifft结果信号,和原信号进行对比%采样率1000
fs=1000;%在N个采样点中,一共振动了k个周期
k=75;%采样总点数
N=1500;%n表示采样的第n个点
n=0:N-1;%xn是采样得到的x(n)时域信号
xn=0.5*sin(2*pi*k/N*n)+3*cos(2*pi*40/N*n)+0.7*sin(2*pi*350/N*n);xk=fft(xn);%abs是求模
P2=abs(xk/N);
P1=P2(1:N/2+1);
P1(2:end-1)=2*P1(2:end-1);%半频谱 f=k*fs/N
f=fs*(0:(N/2))/N;
plot(f,P1) 
title("Single-Sided Amplitude Spectrum of X(t)")
xlabel("f (Hz)")
ylabel("|P1(f)|")% 反傅里叶变换
X = ifft(xk, 'symmetric');% 绘制输入信号和还原信号的图像
figure
subplot(2,1,1)
plot(n, xn)
title('Input Signal')
xlabel('Time (s)')
ylabel('Amplitude')subplot(2,1,2)
plot(n, X)
title('Signal after IFFT')
xlabel('Time (s)')
ylabel('Amplitude')

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

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

相关文章

django实现文件上传

在django中实现文件上传有三种方法可以实现: 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctype"multipart/form-data 一定要加这个,不然只会上传文件名…

HTTPS 的加密流程

目录 一、HTTPS是什么? 二、为什么要加密 三、"加密" 是什么 四、HTTPS 的工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.证书 总结 一、HTTPS是什么? HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议&…

四、Controller 配置总结、RestFul 风格

文章目录 一、Controller 配置总结二、RestFul 风格2.1 使用 RequestMapping 的 method 属性指定请求类型 三、扩展:小黄鸭调试法 一、Controller 配置总结 实现 Controller 控制器的方式 实现 Controller 接口,重写 handleRequest 方法实现 控制器实现 …

Markdown编辑器 Mac版Typora功能介绍

Typora mac是一款跨平台的Markdown编辑器,支持Windows、MacOS和Linux操作系统。它具有实时预览功能,能够自动将Markdown文本转换为漂亮的排版效果,让用户专注于写作内容而不必关心格式调整。 Typora Mac版除了支持常见的Markdown语法外&#…

腾讯云轻量服务器测评:2核 2G 4M

腾讯云轻量2核2G4M服务器,4M带宽下载速度可达512KB/秒,系统盘为50GB SSD盘,300GB月流量,地域节点可选上海、广州和北京,腾讯云百科分享腾讯云2核2G4M轻量应用服务器配置性能表: 目录 腾讯云轻量2核2G4M服…

爬虫逆向实战(十五)--阿某某营登录

一、数据接口分析 主页地址:阿某某营 1、抓包 通过抓包可以发现登录接口是Users/Login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个s加密参数 请求头是否加密? 无响应是否加密? 无cookie是…

【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分

LangChain 的核心构建模块 LLMChain LangChain 应用程序的核心构建模块语言模型 - LLMs提示模板 - Prompt templates输出解析器 - Output Parsers LLMChain 组合 LangChain 应用程序的核心构建模块 LangChain 应用程序的核心构建模块 LLMChain 由三部分组成: 语言…

电脑键盘打不了字按哪个键恢复?最新分享!

“有没有朋友知道电脑键盘为什么会莫名其妙就打不了字?明明用得好好的,突然就打不了字了,真的让人很迷惑!有什么方法可以解决吗?” 电脑键盘为我们的办公提供了很大的方便,我们可以利用键盘输入我们需要的文…

安防监控视频云存储平台EasyCVRH.265转码功能更新:新增分辨率配置

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…

Python文件操作与输入输出:从基础到高级应用

文章目录 🍀引言🍀文件操作基础🍀上下文管理器与文件自动关闭🍀文件的迭代与逐行读取🍀文件的其他常见操作🍀输入输出基础🍀 文件输入输出🍀格式化输出🍀高级文件操作&am…

【BASH】回顾与知识点梳理(二十七)

【BASH】回顾与知识点梳理 二十七 二十七. 磁盘配额(Quota)27.1 磁盘配额 (Quota) 的应用与实作什么是 QuotaQuota 的一般用途Quota 的使用限制Quota 的规范设定项目 27.2 一个 XFS 文件系统的 Quota 实作范例实作 Quota 流程:设定账号实作 Quota 流程-1&#xff1a…

jenkins gitlab 安装

目录 一 准备安装环境 二 安装gitlab软件 三 配置gitlab 四 重新加载配置启动gitlab 五 修改密码 五 创建用户组 一 准备安装环境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安装 Postfix 邮件服务器,以便 Git…

qt事件系统源码-----定时器

qt定时器的使用一般有以下几种方式: 1、直接使用QTimer对象,绑定定时器的timeout信号; 2、使用QTimer的静态方法singleshot方法,产生一个一次性的定时事件 3、在QObject子类中,调用startTimer方法,产生定…

矢量绘图UI设计软件Sketch mac中文版软件说明

Sketch mac是一款适用于 UI/UX 设计、网页设计、图标制作等领域的矢量绘图软件。 Sketch mac软件特点 1. 简单易用的界面设计:Sketch 的用户界面简洁明了,使得用户可以轻松上手操作,不需要复杂的学习过程。 2. 强大的矢量绘图功能&#xff1a…

flinksql实时统计程序背压延迟优化

问题: flinkcdcflinksql做实时读取sls日志和实时统计业务指标,今天发现程序背压了,业务延迟了6个小时。解决办法: 1、资源优化 作业并发大时:在作业的高级配置的资源配置中,增加JobManager的资源&#xf…

香港服务器三网直连内地线路什么意思?好用吗?

​  三网直连内地是指香港服务器可以直接连接中国内地的电信、联通和移动三大运营商网络,避免了中间网络干线的支持。这样可以实现直接、快速、稳定的网络访问,提高用户对网络访问的效率,减少网络访问问题和拥堵的现象。 香港服务器直连内地…

XSS 跨站脚本攻击

XSS(DOM) XSS 又称CSS(Cross Site Scripting)或跨站脚本攻击,攻击者在网页中插入由JavaScript编写的恶意代码,当用户浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。 XSS攻击可分为三种:分别为反射型(Reflected…

线程|线程的使用、四种实现方式

1.线程的实现方式 1.用户级线程 开销小,用户空间就可以创建多个。缺点是:内核无法感知用户级多个线程的存在,把其当作只有一个线程,所以只会提供一个处理器。 2.内核级线程 相对于用户级开销稍微大一点,可以利用多…

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 目录 Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、实现步骤 五、关键代码 一、简…

01- vdom 和模板编译源码

组件渲染的过程 template --> ast --> render --> vDom --> 真实的Dom --> 页面 Runtime-Compiler和Runtime-Only的区别 - 简书 编译步骤 模板编译是Vue中比较核心的一部分。关于 Vue 编译原理这块的整体逻辑主要分三个部分,也可以说是分三步&am…