当前位置: 首页 > 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…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

2025.6.9总结(利与弊)

凡事都有两面性。在大厂上班也不例外。今天找开发定位问题&#xff0c;从一个接口人不断溯源到另一个 接口人。有时候&#xff0c;不知道是谁的责任填。将工作内容分的很细&#xff0c;每个人负责其中的一小块。我清楚的意识到&#xff0c;自己就是个可以随时替换的螺丝钉&…...