音频进阶学习八——傅里叶变换的介绍

文章目录

  • 前言
  • 一、傅里叶变换
    • 1.傅里叶变换的发展
    • 2.常见的傅里叶变换
    • 3.频域
  • 二、欧拉公式
    • 1.实数、虚数、复数
    • 2.对虚数和复数的理解
    • 3.复平面
    • 4.复数和三角函数
    • 5.复数的运算
    • 6.欧拉公式
  • 三、积分运算
    • 1.定积分
    • 2.不定积分
    • 3.基本的积分公式
    • 4.积分规则
      • 线性
      • 替换法
      • 分部积分法
    • 5.定积分计算实例
    • 6.简单描述积分在CFT作用
  • 总结


前言

之前的一系列文章中,我们介绍了信号的分类、系统、以及在时域上对于序列的分析工具卷积公式和差分方程。

由于很多信号的处理从时域上并不能很好、快速的处理,并且基于分析我们得到一个结论,信号的波形可以分解为多个不同频率正弦波的组成,而这个分解的工具就是傅里叶变换。

本章中,会先对傅里叶变换做一个总的介绍,同时,因为学习傅里叶变化需要一定的数学知识,所以本章内容会先介绍傅里叶变换,然后再介绍关于傅里叶变换公式中的数学知识欧拉公式积分方程

|版本声明:山河君,未经博主允许,禁止转载


一、傅里叶变换

1.傅里叶变换的发展

傅里叶级数这个名字是由18世纪法国数学家傅里叶提出的,最开始是用于对热过程解析,但其研究“任意”的周期函数通过一定的分解,都能够表示为正弦和余弦信号的线性组合方式。

而后1829年,狄利赫里给出了傅里叶级数的收敛条件。

二十世纪初,傅里叶的思想被推广到非周期函数,成为了傅里叶变换,可以将任意信号分解成一系列正弦和余弦函数的和。但是此时傅里叶变换存在一些问题,对于非周期函数和时变信号,傅里叶变换无法处理。

直到20世纪70年代,引入的小波信号,解决了这些问题。

傅里叶变换可以化复杂的卷积运算为简单的乘积运算,而后离散形式的傅里叶变换可以利用数字计算机快速的算出,才最终通过计算机对于信号能够做快速的处理。

2.常见的傅里叶变换

  1. 连续傅里叶变换(Continuous Fourier Transform, CFT)
  • 公式
    F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j w t d t f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e − j w t d w F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-jwt}dt\\ f(t)=\frac{1}{2\pi}\int^{\infty}_{-\infty}F(\omega)e^{-jwt}dw F(ω)=f(t)ejwtdtf(t)=2π1F(ω)ejwtdw
  • 定义:连续时间信号 f ( t ) f(t) f(t)和频域 F ( ω ) F(\omega) F(ω)互转
  • 应用场景:连续信号频谱分析
  1. 离散傅里叶变换(Discrete Fourier Transform, DFT)
  • 公式
    X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j 2 π N k n , k = 0 , 1 , 2 , . . , N − 1 x [ n ] = 1 N ∑ k = 0 N − 1 X [ k ] e j 2 π N k n X[k] = \sum^{N-1}_{n=0}x[n]e^{-j\frac{2\pi}{N}kn}, \quad k=0,1,2,..,N-1 \\ x[n] = \frac{1}{N}\sum^{N-1}_{k=0}X[k]e^{j\frac{2\pi}{N}kn} X[k]=n=0N1x[n]ejN2πkn,k=0,1,2,..,N1x[n]=N1k=0N1X[k]ejN2πkn
  • 定义:离散信号频域转换
  • 应用场景:数字信号处理(音频计算机处理)
  1. 短时傅里叶变换(Short-Time Fourier Transform, STFT)
  • 公式:
    S T F T ( t , ω ) = ∫ − ∞ ∞ f ( τ ) ω ( τ − t ) e − j w τ d τ STFT(t,\omega)=\int^{\infty}_{-\infty}f(\tau)\omega(\tau-t)e^{-jw\tau}d\tau STFT(t,ω)=f(τ)ω(τt)ejwτdτ
  • 定义:在信号的时间维度上使用滑动窗口,分段计算傅里叶变换
  • 应用场景:非平稳信号分析(如语音处理、地震波分析)
  1. 离散时间傅里叶变换(Discrete-Time Fourier Transform, DTFT)
  • 公式:
    X [ ω ] = ∑ n = − ∞ ∞ x [ n ] e − j w n X[\omega]=\sum^{\infty}_{n=-\infty}x[n]e^{-jwn} X[ω]=n=x[n]ejwn
  • 定义: 离散时间信号的频谱分析
  • 应用场景:数字信号的理论分析
  1. 傅里叶级数
  • 公式:
    f ( t ) = a 0 + ∑ n = 0 ∞ ( a n cos ⁡ ( n ω 0 t ) + b n sin ⁡ ( n ω 0 t ) ) o r f ( t ) = ∑ n = 0 ∞ c n e j n ω 0 t f(t) = a_0+\sum^{\infty}_{n=0}(a_n\cos(n\omega_0t)+b_n\sin(n\omega_0t)) \quad or\\ f(t)=\sum^{\infty}_{n=0}c_ne^{jn\omega_0t} f(t)=a0+n=0(ancos(nω0t)+bnsin(nω0t))orf(t)=n=0cnejnω0t
  • 定义: 将周期信号分解为多个正弦和余弦函数的线性组合。
  • 应用场景: 信号周期性分析
  1. 小波变换(Wavelet Transform, WT)(多种不做展示)
  • 定义: 一种局部化的傅里叶分析,使用小波函数代替正弦波进行信号分析。
  • 特点: 提供多分辨率分析。
  • 应用场景: 数据压缩、信号去噪、特征提取。
  1. 快速余弦/正弦变换(Fast Cosine/Sine Transform, FCT/FST)
  • 定义: 傅里叶变换的特化形式,仅保留正弦或余弦部分。
  • 应用场景: 压缩算法(如JPEG)、解决偏微分方程。

3.频域

我们说傅里叶变换是将时域转成了频域,那么频域到底是什么?在音频基础文章中,我们有一张对于时域和频域图像的解释图:
在这里插入图片描述
在时域图形中很好理解,这是一个二维坐标轴,横轴表示时间,纵轴表示的波形,那么通过傅里叶变换我们得到的频域图是什么样子呢?这里使用Adobe audition软件做展示:
在这里插入图片描述
我们可以看到频域图的横轴是频率,纵轴是该频率占有的功率/幅度(图像中是转为了db来展示)

二、欧拉公式

在上面各种傅里叶变换公式中,可以看到基本上每个公式都包含 e j w t , ∫ , ω e^{jwt},\int,\omega ejwt,,ω这些符号,对于 ω \omega ω我们之前在音频基础学习中有介绍,单位圆转一圈的时间为一个周期,那么频率 f = 1 t f=\frac {1}{t} f=t1,此时转过的弧度为 2 π 2\pi 2π,而角频率 ω = 2 π t \omega=\frac{2\pi}{t} ω=t2π

而对于 e j w t e^{jwt} ejwt,它其实描述的是某一个点在复平面上的位置,是根据欧拉公式得到的,在之前的文章中,我们使用单位脉冲分解可以表示信号,现在,我们使用复数来看一下复指数信号

1.实数、虚数、复数

  • 虚数:在数学里,将平方是负数的数定义为纯虚数
  • 实数:有理数和无理数的总称;其中无理数就是无限不循环小数,有理数就包括整数和分数
  • 复数: z = a + b i , { a 、 b ∈ R , a ≠ 0 、 b ≠ 0 } z=a+bi, \{a、b∈R,a≠0、b≠0\} z=a+bi,{abRa=0b=0},其中 i 2 = − 1 i^2 = -1 i2=1是指虚数单位,当 a = 0 , b ≠ 0 a=0,b \neq 0 a=0,b=0 z z z是纯虚数,当 a ≠ 0 , b = 0 a\neq0,b=0 a=0,b=0时, z z z是实数

2.对虚数和复数的理解

  1. 发展历史
    复数最早出现于公元1世纪希腊数学家海伦,而给出“虚数”这一名称的是法国数学家笛卡尔(1596~1650)发表出来的。
    刚开始复数的出现不被人们理解,就像 4 − 3 4-3 43人们可以很好理解,那么 3 − 4 3-4 34呢?这到底是什么意思?你怎么能从 4 头奶牛中拿走 3 头奶牛?你怎么能比没有少呢?于是出现了可以跟踪方向的+、-号,那么就可以理解为你还欠我一头奶牛没给我。
    在数学家的目标中,数学体系的一部分就是要确保每个方程都有解,如果 i 2 > 0 i^2 > 0 i2>0很好理解,那么 i 2 = − 1 i^2 = -1 i2=1该怎么理解呢,于是就出现了无法在一维实数线上找到对应值的数——虚数。

  2. 几何意义
    首先思考一个问题,什么样的 i i i乘上自身可以等于-1?
    在这里插入图片描述
    假如我们想从位置A逆时针旋转90°到位置B,再从位置B逆时针旋转90°到位置C,那么是不是 1 ∗ (逆时针旋转 90 ° ) 2 = − 1 1*(逆时针旋转90°)^2 = -1 1(逆时针旋转90°)2=1,是不是把复数在几何中当作旋转这种想法让人非常吃惊?

3.复平面

复平面是用来表示复数的一个二维坐标系,和实数二位坐标系类似,复平面同样有两个轴,只不过一个是实轴,一个是虚轴,如下图:
在这里插入图片描述
前面我们说过 i i i是代表位置A逆时针旋转了90°到达了位置B
复数 z = a + b i z=a+bi z=a+bi在复平面上的含义有:

  • 实部 a a a:代表复数在 实轴 上的位置。
  • 虚部 b b b:代表复数在 虚轴 上的位置
  • 复数 z z z:表示复平面上的一个点,或者说是一个从原点到平面上某个位置的向量

从上图我们可以得到 z = 1 + 1 ∗ i z = 1 + 1 * i z=1+1i,之前我们说过 i i i在几何种表示逆时针旋转90°,我们可以看到 1 + 1 ∗ i 1 + 1 * i 1+1i的表示为逆时针旋转45°,注意看 z z z在复平面上的位置。

4.复数和三角函数

  • 三角函数的理解

在音频基础学习二——声音的波形中,提到了所有的波通过傅里叶变化可以成为正弦波的叠加,反过来,正弦波的叠加最终变为了我们实际数字信号的音频波。

而三角函数作为将角度和弧度联系的数学工具,在单位圆1中,可以把 sin ⁡ θ \sin \theta sinθ 看作竖轴的坐标, cos ⁡ θ \cos \theta cosθ看作横轴的坐标即 位置 D = sin ⁡ α = C D , 位置 E = cos ⁡ α = A D 位置D = \sin\alpha = CD, 位置E = \cos\alpha=AD 位置D=sinα=CD,位置E=cosα=AD
在这里插入图片描述

那么如果这个平面是复平面,那么 z = a + b i = > z = cos ⁡ α + sin ⁡ α i z=a+bi => z=\cos\alpha + \sin\alpha i z=a+bi=>z=cosα+sinαi

  • 极坐标

极坐标是复数 z z z的另外一种表示方式,使用角度 θ \theta θ和模长 r r r进行表示,替换了实轴和虚轴的坐标,其实就是上面的公式 z = cos ⁡ α + sin ⁡ α i z=\cos\alpha + \sin\alpha i z=cosα+sinαi,只是这个公式只有在半径为1的时候才正确,正确的表达方式应该是 z = r ( cos ⁡ θ + i sin ⁡ θ ) z = r(\cos\theta+i \sin\theta) z=r(cosθ+isinθ),此时 r r r为了便于区分,不叫作半径,叫做模长.

5.复数的运算

  • 加法
    复数的加法和物理中实数的加法类似,例如下图,有AB和AC的力,那么最终力是多少?
    在这里插入图片描述
    AB分解为AE和AF, AC分解为AG和AH,那么最终力AD就是AE+AG, AH+AF,即 z = ( 3 + 1 ∗ i ) + ( 1 + 3 ∗ i ) = ( 4 + 4 ∗ i ) z = (3 + 1*i) + (1+3*i) = (4+4*i) z=(3+1i)+(1+3i)=(4+4i)
  • 乘法
    假如现在有 z = ( 3 + 1 ∗ i ) ∗ ( 1 + 1 ∗ i ) = 3 ∗ 1 + 3 ∗ i + 1 ∗ i + i 2 = 2 + 4 i z = (3 + 1*i) * (1+1*i) = 3* 1 + 3 * i + 1* i + i^2 = 2+4i z=(3+1i)(1+1i)=31+3i+1i+i2=2+4i,那么这个有什么意义呢,如下图:
    在这里插入图片描述
    上文我们说过 1 + 1 ∗ i 1 + 1 * i 1+1i的表示为逆时针旋转45°,而上面的最终极坐标的位置也是移动了45°,事实上复数的乘法代表了:模长的拉长(下文中解释),以及极坐标的旋转。

6.欧拉公式

欧拉公式(Euler’s formula)是复分析中的一个重要公式,它展示了复指数函数和三角函数之间的关系。公式的形式为(推导过程太复杂不进行赘述,有兴趣可以自己百度看):
e i θ = cos ⁡ θ + i ∗ sin ⁡ θ e^{i\theta} = \cos\theta + i*\sin\theta eiθ=cosθ+isinθ
我们根据欧拉公式得到复数的表示形式为:
z = r ∗ e i θ z = r * e^{i\theta} z=reiθ
假设有两个复数:

  • z 1 = 2 ∗ e i 30 ° z_1 = 2 * e^{i30°} z1=2ei30°:表示模长为2,角度为30°
  • z 2 = 3 ∗ e i 45 ° z_2 = 3 * e^{i45°} z2=3ei45° :表示模长为3,角度为45°
  • z 1 ∗ z 2 = 2 ∗ 3 ∗ e i ( 30 ° + 45 ° ) = 6 ∗ e i 75 ° z_1* z_2 = 2 * 3 *e^{i(30°+45°)} = 6*e^{i75°} z1z2=23ei(30°+45°)=6ei75°:表示模长为6,角度为75°

三、积分运算

1.定积分

定积分是微积分中的一种运算,它可以用来计算一个函数在某个区间上的“总和”,例如面积、体积或累积量。它的表达方式为:
∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_a^bf(x)dx = F(b)-F(a) abf(x)dx=F(b)F(a)

  • f ( x ) f(x) f(x):是被积函数
  • a , b a,b a,b:是积分的上下限
  • d x dx dx:表示对于 x x x的积分
  • F ( x ) F(x) F(x):是 f ( x ) f(x) f(x)的原函数,即 F ′ ( x ) = f ( x ) F'(x) = f(x) F(x)=f(x)

2.不定积分

不定积分是求一个函数的原函数的过程,结果是一个包含常数项 C C C的函数。它的表达方式为:
∫ f ( x ) d x = F ( x ) + C \int f(x)dx = F(x)+C f(x)dx=F(x)+C

  • F ( x ) F(x) F(x):是 f ( x ) f(x) f(x)的原函数$
  • C C C:是积分常数

注意:虽然定积分和不定积分看起来只是没有了上下限,且在 F ( a ) − F ( b ) F(a)-F(b) F(a)F(b)时,积分常数 C C C被相减消失,但是两者有本质的区别,前者用于计算函数区间上的面积(是数值),后者是寻找原函数的,是函数。

3.基本的积分公式

被积函数 f ( x ) f(x) f(x)原函数 ∫ f ( x ) d x \int f(x)dx f(x)dx
x n , n ≠ 1 x^n,n\neq1 xn,n=1 x n + 1 n + 1 + C \frac{x^{n+1}}{n+1}+C n+1xn+1+C
1 x \frac{1}{x} x1 ln ⁡ ∣ x ∣ + C \ln\mid x\mid+C lnx+C
e x e^x ex e x + C e^x+C ex+C
a x , a > 0 a^x,a>0 ax,a>0 a x ln ⁡ a + C \frac{a^x}{\ln a}+C lnaax+C
sin ⁡ x \sin x sinx − cos ⁡ x + C -\cos x+C cosx+C
cos ⁡ x \cos x cosx sin ⁡ x + C \sin x+C sinx+C
sec ⁡ x \sec^x secx tan ⁡ x + C \tan x+C tanx+C
csc ⁡ x \csc^x cscx − cot ⁡ x + C -\cot x+C cotx+C
sec ⁡ x tan ⁡ x \sec x \tan x secxtanx sec ⁡ x + C \sec x +C secx+C
csc ⁡ x cot ⁡ x \csc x\cot x cscxcotx − csc ⁡ x + C -\csc x+C cscx+C

4.积分规则

线性

积分同样具有线性,即满足叠加和齐次性

  • ∫ [ f ( x ) + g ( x ) ] d x = ∫ f ( x ) d x + ∫ g ( x ) d x \int[f(x)+g(x)]dx=\int f(x)dx+\int g(x)dx [f(x)+g(x)]dx=f(x)dx+g(x)dx
  • ∫ c ∗ f ( x ) d x = c ∗ ∫ f ( x ) d x \int c*f(x)dx=c*\int f(x)dx cf(x)dx=cf(x)dx

替换法

对于复合函数,可以通过变量替换(u-substitution)来简化积分。例如:
∫ ( 2 x ) e x 2 d x \int (2x)e^{x^2}dx (2x)ex2dx
u = x 2 , d u = 2 x d x u=x^2,du=2xdx u=x2,du=2xdx,则
∫ e u d u = e u + C = e x 2 + C \int e^udu=e^u+C=e^{x^2}+C eudu=eu+C=ex2+C

分部积分法

分部积分法用于积分两个函数的乘积,公式为:
∫ u d v = u v − ∫ v d u \int udv=uv-\int vdu udv=uvvdu
例如:
∫ x e x d x \int xe^xdx xexdx
u = x , d v = e x d x , d u = d x , v = e x u=x,dv=e^xdx,du=dx,v=e^x u=x,dv=exdx,du=dx,v=ex,则:
∫ x e x d x = x e x − ∫ e x d x = x e x − e x + C \int xe^xdx=xe^x-\int e^xdx=xe^x-e^x+C xexdx=xexexdx=xexex+C

5.定积分计算实例

例如,现在有函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2,那么求 x ∈ [ 1 , 2 ] x \in[1,2] x[1,2]时的面积:
在这里插入图片描述

  • 定积分的理解:
    假设我们把区间 [ a , b ] [a,b] [a,b]分割成 n n n等份,即 Δ x = b − a n , x 0 = a , x 1 = a + Δ , x 2 = a + 2 × Δ , . . . , x n = b \Delta x=\frac{b-a}{n},\quad x_0=a,x_1 = a+\Delta,x_2=a+2\times\Delta,...,x_n=b Δx=nba,x0=a,x1=a+Δ,x2=a+2×Δ,...,xn=b,此时当 n n n趋向无穷大时, f ( x 0 ) = f ( x 1 ) f(x_0) = f(x_1) f(x0)=f(x1),所以面积就变成了 n n n个面积的累加和,就有:
    ∫ a b f ( x ) d x = lim ⁡ n → ∞ ∑ i = 1 n f ( x i ) Δ x \int_a^bf(x)dx = \lim_{n\rightarrow\infty}\sum^n_{i=1}f(x_i)\Delta x abf(x)dx=nlimi=1nf(xi)Δx
  • 结合积分公式得结果
    ∫ 1 2 x 2 d x = F ( 2 ) − F ( 1 ) = 2 2 + 1 2 + 1 − 1 2 + 1 2 + 1 = 8 3 − 1 3 ≈ 2.33 \int_1^2x^2dx=F(2)-F(1)=\frac{2^{2+1}}{2+1}-\frac{1^{2+1}}{2+1}=\frac{8}{3}-\frac{1}{3}\approx 2.33 12x2dx=F(2)F(1)=2+122+12+112+1=38312.33
    在这里插入图片描述

6.简单描述积分在CFT作用

对于连续时间傅里叶变换
F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j w t d t F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-jwt}dt F(ω)=f(t)ejwtdt
f ( t ) f(t) f(t)是时域信号, F ( W ) F(W) F(W)是对应的频域信号,积分的作用是将 f ( t ) f(t) f(t) e − j w t e^{-jwt} ejwt做点积,用来测量 f ( t ) f(t) f(t)在频率 W W W上的投影。换句话说,积分计算了信号在特定频率下的权重(即幅值和相位)。

具体详细过程受文章篇幅影响,在之后的文章中给出详细解释。


总结

在本篇文章中,先介绍了对于傅里叶变换的历史、傅里叶变换的多个公式,以及对于公式中所需要的数学知识做了详细的介绍。结合图形的方式理解欧拉公式中,复指数函数和三角函数的关系,使用复指数函数来表述信号。同时介绍了积分的运算知识,简单描述了积分在傅里叶变换中的作用。

在一篇文章中,将深入解析傅里叶变换公式以及它的应用。

如果对您有所帮助,请帮忙点个赞吧

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

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

相关文章

智能高效的IDE GoLand v2024.3全新发布——支持最新Go语言

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…

SQL server学习06-查询数据表中的数据(中)

目录 一,聚合函数 1,常用聚合函数 2,具体使用 二,GROP BY子句分组 1,基础语法 2,具体使用 3,加上HAVING对组进行筛选 4,使WHERE记录查询条件 汇总查询:在对数…

游戏引擎学习第52天

仓库 : https://gitee.com/mrxiao_com/2d_game 这节的内容相当多 回顾 在游戏中,实体被分为不同的类别:接近玩家的“高频实体”、距离较远并正在模拟的“低频实体”和不进行更新的“休眠实体”。这些实体会根据它们与玩家的距离进行处理,接…

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本,功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG,新增了"矢量分割工具"菜单,同时增加及更新了了若干功能,新工具使用说明如下: 一、勘测定界工具栏更新界址点成果…

MySQL之数据库三大范式

一、什么是范式? 范式是数据库遵循设计时遵循的一种规范,不同的规范要求遵循不同的范式。 (范式是具有最小冗余的表结构) 范式可以 提高数据的一致性和 减少数据冗余和 更新异常的问题 数据库有六种范式(1NF/2NF/3NF…

使用 mkcert 工具自签发 https 证书并进行本地受信

介绍 mkcert 是一个用于创建本地受信任的 SSL/TLS 证书的简单工具,特别适合开发者在本地环境中使用。它解决了为开发和测试目的创建自签名证书时遇到的信任问题。以下是关于 mkcert 的详细介绍: 特点 易用性:只需一条命令即可生成证书&…

【Swift】集合类型 - 数组、集合、字典

文章目录 集合的可变性数组数组类型简写语法创建空数组使用默认值创建数组通过合并两个数组创建一个新数组使用数组字面量创建数组访问和修改数组 Swift 提供了三种主要的 集合类型,分别是数组、集合和字典,用于存储值集合。数组是有序的值集合。集合是无…

探索 Janus-1.3B:一个统一的 Any-to-Any 多模态理解与生成模型

随着多模态技术的不断发展,越来越多的模型被提出以解决跨文本与图像等多种数据类型的任务。Janus-1.3B 是由 DeepSeek 推出的一个革命性的模型,它通过解耦视觉编码并采用统一的 Transformer 架构,带来了一个高度灵活的 any-to-any 多模态框架…

C# 中的闭包

文章目录 前言一、闭包的基本概念二、匿名函数中的闭包1、定义和使用匿名函数2、匿名函数捕获外部变量3、闭包的生命周期 三、Lambda 表达式中的闭包1、定义和使用 Lambda 表达式2、Lambda 表达式捕获外部变量3、闭包的作用域 四、闭包的应用场景1、事件处理2、异步编程3、迭代…

圣诞树.HTML

一&#xff08;1圣诞树&#xff09;代码 <!--* Author: Tina Huang* Date: 2022-12-09 21:29:19* LastEditors: Tina Huang* LastEditTime: 2022-12-10 15:35:42* Description: --> <!DOCTYPE html> <html lang"en"><head><meta charse…

Cesium进阶教程——自定义图形、外观、绘图基础、现有着色器移植至Cesium、ShadowMapping、视频GIS、模型压平、卷帘

基础必看 WEBGL基础&#xff08;从渲染管线角度解读&#xff09; 参考路线 http://www.xt3d.online/tutorial/further/article.html 自定义图形 https://blog.csdn.net/m0_55049655/article/details/138908327 https://blog.csdn.net/m0_55049655/article/details/140306837 …

ElementPlus Table 表格实现可编辑单元格

通过基础的Table表格来实现单元格内容的可编辑 1.首先定位到需要编辑的列&#xff0c;替换el-table-column <el-table-column label"Editable Column" width"300"><template #default"{ row, column, $index }"><el-inputsize&qu…

如何建设金融数据中心

目录 总则 概述 要求 基本原则 数据中心治理 概述 战略管控 战略规划 战略实施 延伸阅读 总则 概述 本文以描述金融数据中心的治理域内容为基础,从金融数据中心建设、运营及安全保障的角度出 发,逐一描述场地环境、网络通信、运行管理和风险管控等能力域的具体…

AI Weekly『12月9-15日』:OpenAI发布Sora,谷歌发布Gemini 2.0,xAI免费开放使用!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Ubuntu 18.04无有线图表且无法设置有线网络

问题背景&#xff1a; 今天在登陆自己的虚拟机Ubuntu系统的时候突然出现 有线连接无法连接的问题&#xff0c;有线连接的图标变为没有了&#xff0c;无法点击网络菜单的Setting模块选项。我的虚拟机有线网络连接方式是NAT方式。 没有如下有线连接图标 解决方法&#xff1a; …

Maven插件打包发布远程Docker镜像

dockerfile-maven-plugin插件的介绍 dockerfile-maven-plugin目前这款插件非常成熟&#xff0c;它集成了Maven和Docker&#xff0c;该插件的官方文档地址如下&#xff1a; 地址&#xff1a;https://github.com/spotify/dockerfile-maven 其他说明&#xff1a; dockerfile是用…

Dart 3.6 发布,workspace 和 Digit separators

workspace 之前我们就聊过 Flutter 正在切换成 Monorepo 和支持 workspaces &#xff0c;Dart 3.6 开始&#xff0c;Pub 现在正式支持 monorepo 或 workspace 中 package 之间的共享解析。 pub workspaces 功能可确保 monorepo 中的 package 共享一组一致的依赖项&#xff0c…

c#笔记2024

Application.Updatescreen刷新整个屏幕 Ctrl r e自动添加get和set CompositeCurve3d 复合曲线 List<Entity> entS listline.Cast<Entity>().ToList();//list类型强转 前面拼上\u0003&#xff0c;就可以实现&#xff0c;不管有没有命令都能打断当前命令的效果 取…

【C++】sophus : interpolate_details interpolate 两李群元素之间平滑插值 (十一)

interpolate_details 这段代码为 Sophus 库的插值模块提供了一组工具&#xff0c;用于处理各种 Lie 群&#xff08;如 SO(2)、SE(3)、Sim(3) 等&#xff09;的特性查询&#xff0c;特别是关于路径歧义的检查。这些工具定义在 interp_details 命名空间中&#xff0c;通过模板化…