当前位置: 首页 > news >正文

傅里叶变换推导

基本模型

假设在二维直角坐标系中,\underset{C}{\rightarrow}可以用相互垂直的基向量\underset{A_1}{\rightarrow}\underset{A_2}{\rightarrow}表示:

假设:

\overrightarrow{A_1} = [1, 0]

\overrightarrow{A_2} = [0, 1]

\overrightarrow{C} = [2, 3]

假设\overrightarrow{C}\overrightarrow{A_1}上的投影为T_{\overrightarrow A_1}^{\overrightarrow C},那么:

T_{\overrightarrow A_1}^{\overrightarrow C} = \overrightarrow{C} \cdot \overrightarrow{A_1} = 2*1 + 3*0 = 2

T_{\overrightarrow A_2}^{\overrightarrow C} = \overrightarrow{C} \cdot \overrightarrow{A_2} = 2*0 + 3*1 = 3

所以:

\overrightarrow{C} = 2\overrightarrow{A_1} + 3\overrightarrow{A_2}

用公式表达:

\overrightarrow{C} = k_{1}\overrightarrow{A_1} + k_{2}\overrightarrow{A_2}

k_1 = T_{\overrightarrow A_1}^{\overrightarrow C} = \overrightarrow C \cdot \overrightarrow A_1

k_2 = T_{\overrightarrow A_2}^{\overrightarrow C} = \overrightarrow C \cdot \overrightarrow A_2

但是在实际中,基向量\underset{A_1}{\rightarrow}\underset{A_2}{\rightarrow}不一定长度都是1,重新推导一下:

假设:

\overrightarrow{A_1} = [5, 0]

\overrightarrow{A_2} = [0, 7]

\overrightarrow{C} = [2, 3]

那么:

k_1 = T_{\overrightarrow A_1}^{\overrightarrow C} = \frac { | \overrightarrow C | cos\theta } {| \overrightarrow A_1 |}

两边乘以| \overrightarrow A_1 |

k_1 = \frac { | \overrightarrow A_1 | | \overrightarrow C | cos\theta } {| \overrightarrow A_1 | ^2}

分子部分其实就是求\overrightarrow{C}\overrightarrow{A_1}上的投影与| \overrightarrow{A_1} |的乘积,所以:

k_1 = \frac { \overrightarrow A_1 \cdot \overrightarrow C } {| \overrightarrow A_1 | ^2}

带入数据:

k_1 = \frac {[5,0] \cdot [2, 3]}{\sqrt{5^2+0^0}^2} = \frac{5*2+0*3}{25} = \frac{2}{5}
大功告成。

结论:

\overrightarrow{C} = k_{1}\overrightarrow{A_1} + k_{2}\overrightarrow{A_2}

k_1 = T_{\overrightarrow A_1}^{\overrightarrow C} = \frac {\overrightarrow C \overrightarrow A_1}{|\overrightarrow A_1|^2}

k_2 = T_{\overrightarrow A_2}^{\overrightarrow C} = \frac {\overrightarrow C \overrightarrow A_2}{|\overrightarrow A_2|^2}

从二维到无限维

二维模型如下:

向量维度1的投影维度2的投影
\overrightarrow{C}23
\overrightarrow{A_1}10
\overrightarrow{A_2}01

扩展到三维:

向量维度1的投影维度2的投影维度3的投影
\overrightarrow{C}c1c2c3
\overrightarrow{A_1}100
\overrightarrow{A_2}010
\overrightarrow{A_3}001

可以看到,\overrightarrow{C}有多少个维度就要有多少个基向量,每个基向量的维度和\overrightarrow{C}相等。

扩展到无限维:

向量维度1的投影维度2的投影维度3的投影维度n的投影
\overrightarrow{C}c1c2c3cn
\overrightarrow{A_1}1000
\overrightarrow{A_2}0100
\overrightarrow{A_3}0010
\overrightarrow{A_n}0001

把函数当成无限维向量

把函数的t当成无限维,它的值分布在各自的维度上:

函数t_0t_1t_2t_n
f(t)f(t_0)f(t_1)f(t_2)f(t_n)
f_1(t)f_1(t_0)f_1(t_1)f_1(t_2)f_1(t_n)
f_2(t)f_2(t_0)f_2(t_1)f_2(t_2)f_2(t_n)
f_3(t)f_3(t_0)f_3(t_1)f_3(t_2)f_3(t_n)
f_n(t)f_n(t_0)f_n(t_1)f_n(t_2)f_n(t_n)

于是:

f(t) = k_1f_1(t) + k_2f_2(t) + ... + k_nf_n(t)

f(t) = \sum_{i=0}^{n} k_{i}f_i(t)

这里有个容易让人困惑的点:

前面的各个基向量都是这样的:

向量维度1的投影维度2的投影维度3的投影维度n的投影
\overrightarrow{A_1}1000
\overrightarrow{A_2}0100
\overrightarrow{A_3}0010
\overrightarrow{A_n}0001

每个向量只在自己的维度有值,在别的维度为0。

那现在的函数在别的维度上等于0吗?

不一定,但是没错。

首先各个维度的基向量是正交(垂直)的,比如:

T_{\overrightarrow{A_3}}^{\overrightarrow{A_1}} = \frac { \overrightarrow{A_1} \cdot \overrightarrow{A_3}} {|\overrightarrow{A_3}|^2} = \frac { [1,0,0] \cdot [0,0,1] }{\sqrt{0^2+0^2+3^2}^2} = 0

这里的函数其实也是正交的:

T_{f_3(t)}^{f_1(t)} = \frac { f_1(t) \cdot f_3(t) }{f_3(t) \cdot f_3(t)} = \frac { \sum_{0}^{t_n} f_1(t)f_3(t) } { \sum_{0}^{t_n} f_3(t)f_3(t) }

两边乘以dt

T_{f_3(t)}^{f_1(t)} = \frac { \frac { \int_{0}^{t_n} f_1(t)f_3(t) dt } {dt} } { \frac { \int_{0}^{t_n} f_3(t)f_3(t) dt } {dt} } = \frac {\int_{0}^{t_n} f_1(t)f_3(t) dt}{\int_{0}^{t_n} f_3(t)f_3(t) dt}

在傅里叶变换中:

各个基函数=sin(nw_0t)+cos(nw_0t) 

其中w_0是步长的意思,任你选取,n=1,2,...

总的意思就是f(t)可以表示成很多正交的、不同频率(一个频率就是一个维度)的三角函数之和。

可以证明:

sin(nw_0t)sin(kw_0t)正交,sin(nw_0t)cos(kw_0t)正交。

于是:

f_1(t) = sin(w_0t)

f_3(t) = sin(3w_0t)

T_{f_3(t)}^{f_1(t)} = \frac {\int_{0}^{t_n} f_1(t)f_3(t) dt}{\int_{0}^{t_n} f_3(t)f_3(t) dt} = 0

好了,f_i(t)已知了,k_i怎么求?

由前面的公式:

k_1 = T_{\overrightarrow A_1}^{\overrightarrow C} = \frac {\overrightarrow C \overrightarrow A_1}{|\overrightarrow A_1|^2}

可以推导出:

k_1 = T_{f_1(t)}^{f(t)} = \frac {f(t) \cdot f_1(t) }{f_1(t) \cdot f_1(t)} = \frac { \sum_{t=0}^{t_n}f(t) \cdot f_1(t) }{ \sum_{t=0}^{t_n} f_1(t) \cdot f_1(t)}

套用之前两边乘以dt的方法:

k_1 = \frac { \frac { \int_{0}^{t_n}f(t) f_1(t)dt}{dt} }{\frac { \int_{0}^{t_n}f_1(t) f_1(t)dt}{dt}}

k_1 = \frac { \int_{0}^{t_n}f(t) f_1(t)dt} { \int_{0}^{t_n}f_1(t) f_1(t)dt}

带入f_1(t) = sin(nw_0t)n = 1

k_1 = \frac { \int_{0}^{t_n}f(t) sin(nw_0t)dt} { \int_{0}^{t_n}sin(nw_0t) sin(nw_0t)dt}

k_1 = \frac { \int_{0}^{t_n}f(t) sin(nw_0t)dt} {t_n/2}

k_1 = \frac{2}{t_n} \int_{0}^{t_n}f(t) sin(nw_0t)dt

这便是傅里叶级数了。

其它

各个基函数必须是两两正交的,不然所有推导都是错的。

好多资料说两个函数的正交等于它们的内积:

f_1(t) \cdot f_3(t) = \int_{t=0}^{T} f_1(t)f_3(t) dt

但是由向量的点积推出来应该是这样才对:

f_1(t) \cdot f_3(t) = \frac { \int_{t=0}^{T} f_1(t)f_3(t) dt } {dt}

可这样也是不对的,不存在这种操作。在我的推导中用了这个等式,但是我分子分母约掉dt了,所以避开了。

相关文章:

傅里叶变换推导

基本模型 假设在二维直角坐标系中,可以用相互垂直的基向量和表示: 假设: 假设在上的投影为,那么: 所以: 用公式表达: 但是在实际中,基向量和不一定长度都是1,重新推导一…...

扣子工作流中禁止同类别的图像流节点,不能超过4个

一、问题1不能在一个工作流中超过4个图像的并行节点 1、现象 本来想着在扣子中一次生成多张图片。 然后问了扣子小助手 2、图像节点限制 扣子给了如下反馈 近期图像流上线了并发限额,具体规则如下: 针对对象:单用户维度,非 bot…...

Java 语言深度剖析与实践应用

一、引言 Java 作为一种广泛应用于各种领域的编程语言,自 1995 年诞生以来,凭借其跨平台性、面向对象特性、丰富的类库以及强大的生态系统,在软件开发行业占据着重要地位。无论是企业级应用开发、移动应用开发、大数据处理还是分布式系统构建…...

1.14学习总结

日常刷题单 刷了题目后,对于排序方法更加熟练,手搓代码的速度也得到了提高。 感觉字符串还不熟练,高精度更是云里雾里,上升空间极大。 同时看见今晚有个入门难度的测试,去练了练手,想看看自己是什么成分&…...

C++蓝桥杯基础篇(三)

片头 哈喽!小伙伴们,大家好~,今天我们来学习蓝桥杯基础篇(三),继续练习相关习题,准备好了吗?我们开始啦~ 一、while循环 可以简单理解为循环版的if语句。if语句是判断1次&#xff0…...

微信小程序的制作

制作微信小程序的过程大致可以分为几个步骤:从环境搭建、项目创建,到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前,你需要确保你已经完成了以下几个步骤: 注册微信小程序账号&…...

Sass更新:@import——>@use

背景:将一个公共的CSS样式文件导入到任意一个组件中进行使用 一、创建并使用CSS公共样式文件 1、在目录的assets目录下创建一个style文件夹,里面存放一个.scss文件(例:mixin.scss) 2、文件内以mixin来设置名为flex的…...

Python使用Flask结合DeepSeek开发

一、背景 我之前关于DeepSeek使用ollama部署的文章大家可以把DeepSeek大模型部署起来。那么ollama还提供了可以调用对应部署模型的API接口。我们可以基于这些接口,做自己的二次开发。使用pythonflaskollama就可以进行模型对话调用。并且前端采用SSE的技术&#xff0…...

python中的抽象类在项目中的实际应用

抽象类在项目中的实际应用主要体现在 规范代码结构、强制子类实现某些方法、提供部分通用功能,让代码更稳定、易维护。 举个例子:数据校验器 假设你在做一个 用户输入校验系统,需要支持 数字校验、字符串校验 和 邮箱校验。如果不用抽象类&…...

New Game--(单调队列)

I - New Game 有一种新的游戏,Monocarp 想要玩。这个游戏使用一副包含 n 张牌的牌堆,其中第 i 张牌上写有一个整数 a_i。 在游戏开始时,Monocarp 可以在第一轮选择牌堆中的任意一张牌。在接下来的每一轮中,Monocarp 可以选择一张…...

mapbox V3 新特性,添加下雪效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象…...

无人机遥感在农林信息提取中的实现方法与GIS融合制图教程

遥感技术作为一种空间大数据手段,能够从多时、多维、多地等角度,获取大量的农情数据。数据具有面状、实时、非接触、无伤检测等显著优势,是智慧农业必须采用的重要技术之一。 一:综合态势分析 1.1 研究区及作物品种分析 &#xff…...

生物发酵展与2025生物医药创新技术与应用发展论坛同期盛大举办

近日,备受瞩目的生物发酵展与2025生物医药创新技术与应用发展论坛暨展览会宣布将同期盛大举办。这一消息标志着生物科技领域两大盛会的强强联合,将为全球生物科技与医药行业带来前所未有的交流与合作机遇。 生物发酵展作为生物科技领域的知名展会&#x…...

Jenkins 配置 Git Repository 五

Jenkins 配置 Git Repository 五 这里包含了 Freestyle project 任务类型 和 Pipeline 任务类型 关于 Git 仓库的配置,如下 不同的任务类型,只是在不同的模块找到 配置 Git 仓库 找到 Git 仓库配置位置之后,所有的任务类型配置都是一样的 …...

记录阿里云CDN配置

网站接入CDN全流程,共4步!-阿里云开发者社区 1、开通阿里云CDN服务 2、添加加速域名 3、验证域名归属权 4、域名添加CDN生成的CNAME解析 按照官网描述增加。细节点: 1. 域名和泛域名区别 2.开启https,要用nginx的证书,和项…...

mapbox 从入门到精通 - 目录

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀总目录1.1 ☘️ mapbox基础1.2 ☘️…...

mysql中general_log日志详解

介绍 1.记录范围:这个log里面会记录MySQL所有的SQL语句,不管是查询语句,还是DML语句,还是DDL语句,还是DCL语句,这些语句统统都会被记录在general log文件中。就连我们连接和断开MySQL数据库的这些语句。 2…...

算法与数据结构:从基础到深入

1. 数组 (Array) 定义 一组连续内存空间存储的相同类型元素的集合。特点:通过下标(索引)快速访问元素,但大小固定(静态数组)或可扩展(动态数组)。 核心操作 操作时间复杂度说明访…...

基于千兆5G网关的5G急救车方案

伴随5G网络的全面建成,5G技术的低延时、高速率、广接入等优势,为各行各业都带来了新一轮技术升级。在医疗救援方面,救护车是链接病患与医院的重要纽带,得益于5G物联网的融合应用,救护车也快速向联网化、信息化、智能化…...

【C#】的WPF或是WinForm实现Ctrl+ 的快捷键组合使用

在C#中&#xff0c;无论是WPF还是WinForms应用程序&#xff0c;处理快捷键&#xff08;例如 Ctrl &#xff09;通常涉及检测键盘输入并执行相应的命令或方法。 WPF 实现 在WPF中&#xff0c;可以通过设置一个控件的 InputBindings 属性来绑定快捷键。 <Window x:Class&qu…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...