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

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结


文章内容来自DR_CAN关于傅里叶变换的视频,本篇文章提供了一些基础知识点,比如三角函数常用的导数、三角函数换算公式等。

文章全部链接:
基础知识点
Part1:三角函数系的正交性
Part2:T=2π的周期函数的傅里叶级数展开
Part3:周期为T=2L的函数展开
Part4:傅里叶级数的复数形式
Part5:从傅里叶级数推导傅里叶变换
总结


文章目录

  • Part4:傅里叶级数的复数形式
  • Part5:从傅里叶级数推导傅里叶变换
  • 总结


Part4:傅里叶级数的复数形式

前面的部分得到了对于周期为 T T T的函数,有 L = 2 T L = \frac{2}{T} L=T2其傅里叶级数的展开函数形式:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n ω t + b n s i n n ω t ) a 0 = 2 T ∫ 0 T f ( t ) d t a n = 2 T ∫ 0 T f ( t ) c o s n ω t d t b n = 2 T ∫ 0 T f ( t ) s i n n ω t d t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n cos n \omega t + b_n sin n \omega t \right) \\ a_0 & = \frac{2}{T} \int_{0}^{T} f(t) dt \\ a_n & = \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt \\ b_n & = \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \end{align} f(t)a0anbn=2a0+n=1(ancost+bnsinnωt)=T20Tf(t)dt=T20Tf(t)costdt=T20Tf(t)sinnωtdt

在了解傅里叶级数的复数形式之前,需要了解欧拉公式

e i θ = c o s θ + i s i n θ e^{i \theta} = cos \theta + i sin \theta eiθ=cosθ+isinθ

由欧拉公式可以得到:

c o s θ = e i θ + e − i θ 2 s i n θ = − i 2 ( e i θ − e − i θ ) \begin{align} cos \theta = \frac{e^{i \theta } + e^{-i \theta}}{2} \\ sin \theta = - \frac{i}{2} (e^{i \theta } - e^{-i \theta}) \end{align} cosθ=2eiθ+eiθsinθ=2i(eiθeiθ)

计算 c o s θ cos \theta cosθ s i n θ sin \theta sinθ的方法,令 θ = − θ \theta = - \theta θ=θ,代入欧拉公式,组成一个方程组:
{ e i θ = c o s θ + i s i n θ e − i θ = c o s θ − i s i n θ \left\{\begin{matrix} e^{i \theta} = cos \theta + i sin \theta \\ e^{-i \theta} = cos \theta - i sin \theta \end{matrix}\right. {eiθ=cosθ+isinθeiθ=cosθisinθ
两式相加得到 c o s θ cos \theta cosθ,两式相减得到 s i n θ sin \theta sinθ


将复数形式得到的 c o s θ cos \theta cosθ s i n θ sin \theta sinθ代入傅里叶级数展开函数,有:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n 2 ( e i n ω t + e − i n ω t ) − i b n 2 ( e i n ω t − e − i n ω t ) ) = a 0 2 + ∑ n = 1 ∞ ( a n − i b n 2 e i n ω t + a n + i b n 2 e − i n ω t ) = a 0 2 + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = 1 ∞ a n + i b n 2 e − i n ω t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( \frac{a_n}{2} (e^{in \omega t} + e^{-i n \omega t}) - \frac{i b_n} {2} (e^{i n \omega t} - e^{-i n \omega t}) \right) \\ & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( \frac{a_n - i b_n}{2} e^{in \omega t} + \frac{a _n + i b_n}{2} e^{-i n \omega t}\right) \\ & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \frac{a_n - i b_n}{2} e^{in \omega t} + \sum_{n=1}^{\infty} \frac{a _n + i b_n}{2} e^{-i n \omega t} \end{align} f(t)=2a0+n=1(2an(einωt+einωt)2ibn(einωteinωt))=2a0+n=1(2anibneinωt+2an+ibneinωt)=2a0+n=12anibneinωt+n=12an+ibneinωt

对上式第三项,令 n = − n n=-n n=n,转换为:

f ( t ) = ∑ n = 0 0 a 0 2 e i n ω t + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = − ∞ − 1 a − n + i b − n 2 e i n ω t f(t) = \sum_{n=0}^{0} \frac{a_0}{2} e^{i n \omega t} + \sum_{n=1}^{\infty} \frac{a_n - i b_n}{2} e^{in \omega t} + \sum_{n=- \infty}^{-1} \frac{a _{-n} + i b_{-n} } {2} e^{i n \omega t} f(t)=n=002a0einωt+n=12anibneinωt+n=12an+ibneinωt

可以发现在区间 ( − ∞ , ∞ ) (- \infty, \infty) (,)之间有共同项 e i n ω t e^{i n \omega t} einωt,令共同项的系数为 C n C_n Cn,那么就得到:

f ( t ) = ∑ − ∞ ∞ C n e i n ω t C n = { a 0 2 , n = 0 1 2 ( a n − i b n ) , n = 1 , 2 , 3 , . . . 1 2 ( a − n + i b − n ) , n = − 1 , − 2 , − 3 , . . . f(t) = \sum_{- \infty}^{\infty} C_n e^{in \omega t} \\ C_n = \left\{\begin{matrix} \frac{a_0}{2}, & n=0 \\ \frac{1}{2}\left( a_n - i b_n \right), & n= 1, 2,3,... \\ \frac{1}{2} \left ( a_{-n} + i b_{-n} \right), & n = -1, -2, -3, ... \end{matrix}\right. f(t)=CneinωtCn= 2a0,21(anibn)21(an+ibn)n=0n=1,2,3,...n=1,2,3,...

a 0 a_0 a0 a n a_n an b n b_n bn代入到 C n C_n Cn

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n ω t + b n s i n n ω t ) a 0 = 2 T ∫ 0 T f ( t ) d t a n = 2 T ∫ 0 T f ( t ) c o s n ω t d t b n = 2 T ∫ 0 T f ( t ) s i n n ω t d t \begin{align} f(t) & = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n cos n \omega t + b_n sin n \omega t \right) \\ a_0 & = \frac{2}{T} \int_{0}^{T} f(t) dt \\ a_n & = \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt \\ b_n & = \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \end{align} f(t)a0anbn=2a0+n=1(ancost+bnsinnωt)=T20Tf(t)dt=T20Tf(t)costdt=T20Tf(t)sinnωtdt

n = 0 n=0 n=0时,

C n = a 0 2 = 1 2 ⋅ 2 T ∫ 0 T f ( t ) d t = 1 T ∫ 0 T f ( t ) d t C_n = \frac{a_0}{2} = \frac{1}{2} \cdot \frac{2}{T} \int_{0}^{T} f(t)dt = \frac{1}{T} \int_{0}^{T} f(t) dt Cn=2a0=21T20Tf(t)dt=T10Tf(t)dt

n > 0 , n ∈ Z n>0, n \in Z n>0,nZ时,

C n = 1 2 [ 2 T ∫ 0 T f ( t ) c o s n ω t d t − i 2 T ∫ 0 T f ( t ) s i n n ω t d t ] = 1 T ∫ 0 T f ( t ) ( c o s n ω t − s i n n ω t ) d t c o s n ω t − s i n n ω t = c o s ( − n ω t ) + s i n ( − n ω t ) = e − i n ω t C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{2}\left[ \frac{2}{T} \int_{0}^{T} f(t) cos n \omega t dt - i \frac{2} {T} \int_{0}^{T} f(t) sin n \omega t dt \right] \\ = \frac{1}{T} \int_{0}^{T} f(t) \left ( cos n \omega t - sin n \omega t \right) dt \\ cos n \omega t - sin n \omega t = cos (- n \omega t) + sin (- n \omega t) = e^{- i n \omega t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} dt Cn=21[T20Tf(t)costdtiT20Tf(t)sinnωtdt]=T10Tf(t)(costsinnωt)dtcostsinnωt=cos(t)+sin(t)=einωtCn=T10Tf(t)einωtdt

n < 0 , n ∈ Z n<0, n \in Z n<0,nZ时,

C n = 1 2 ( a − n + i b − n ) = 1 2 [ 2 T ∫ 0 T f ( t ) c o s ( − n ω t ) d t + i ⋅ 2 T ∫ 0 T f ( t ) s i n ( − n ω t ) d t ] = 1 T ∫ 0 T f ( t ) [ c o s ( − n ω t ) + s i n ( − n ω t ) ] d t = 1 T ∫ 0 T f ( t ) e − i n ω t C_n = \frac{1}{2} \left ( a_{-n} + i b_{-n} \right) \\ = \frac{1}{2} \left[ \frac{2}{T} \int_{0}^{T} f(t) cos \left( - n \omega t \right) dt + i \cdot \frac{2}{T} \int_{0}^{T} f(t) sin (- n \omega t) dt \right] \\ = \frac{1}{T}\int_{0}^{T} f(t) \left[ cos (- n \omega t) + sin (- n \omega t) \right] dt \\ = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} Cn=21(an+ibn)=21[T20Tf(t)cos(t)dt+iT20Tf(t)sin(t)dt]=T10Tf(t)[cos(t)+sin(t)]dt=T10Tf(t)einωt

n = 0 n=0 n=0时,

C n = 1 T ∫ 0 T f ( t ) d t = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{T} \int_{0}^{T} f(t) dt = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t} dt Cn=T10Tf(t)dt=T10Tf(t)einωtdt

从上面可以看出来,在 ( − ∞ , ∞ ) (- \infty , \infty) (,)区间内, C n C_n Cn可以统一到一个形式: C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac{1}{T} \int_{0}^{T} f(t) e ^{- i n \omega t}dt Cn=T10Tf(t)einωtdt


总结,对于一个周期为 T T T的函数 f ( t ) = f ( t + T ) f(t) = f(t+T) f(t)=f(t+T),其复数形式的傅里叶展开函数为:
f ( t ) = ∑ − ∞ ∞ C n e i n ω t C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t f(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{- i n \omega t}dt f(t)=CneinωtCn=T10Tf(t)einωtdt


Part5:从傅里叶级数推导傅里叶变换

前面得到了周期函数复数形式的傅里叶展开函数,令 ω 0 = 2 π T \omega _0 = \frac{2 \pi}{T} ω0=T2π ω 0 \omega_0 ω0被称为基频率。

f T ( t ) = ∑ − ∞ ∞ C n e i n ω 0 t C n = 1 T ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t 其中 n ∈ Z \begin{align} & f_T(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega_0 t} \\ & C_n = \frac{1}{T} \int_{- \frac{T}{2}}^{\frac{T}{2}} f_T(t) e^{- i n \omega_0 t}dt \\ & 其中n \in Z \end{align} fT(t)=Cneinω0tCn=T12T2TfT(t)einω0tdt其中nZ

对于一个周期函数,假设其图示如下,横坐标为 t t t,纵坐标为对应的值,这是在时域空间上的图。

在这里插入图片描述

如果采用如下图所示的坐标系,以 n ω 0 n \omega_0 nω0 x x x坐标,实轴和虚轴分别为 z z z y y y坐标,这是在频域空间上的图,也称为频谱图。可能其分布如下(如下值是随机绘制的,不对应上图,假设存在这样的频谱图)。

在这里插入图片描述

令两个频率之间的距离为 Δ ω \Delta \omega Δω,那么 Δ ω = ( n + 1 ) ω 0 − n ω 0 = ω 0 = 2 π T \Delta \omega = (n+1) \omega_0 - n \omega_0 = \omega_0 = \frac{2 \pi}{T} Δω=(n+1)ω0nω0=ω0=T2π,可以得到 1 T = Δ ω 2 π \frac{1}{T} = \frac{\Delta \omega}{2 \pi} T1=2πΔω

当周期 T T T趋近于 ∞ \infty 时,周期函数就变为了非周期函数 lim ⁡ T → ∞ f T ( t ) = f ( t ) \lim_{T \to \infty} f_T(t) = f(t) limTfT(t)=f(t) Δ ω \Delta \omega Δω就变成了0,从而离散函数变为了连续函数。

C n C_n Cn 1 T \frac{1}{T} T1代入到傅里叶级数展开函数:

f T ( t ) = ∑ − ∞ ∞ Δ ω 2 π ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t e i n ω 0 t f_T(t) = \sum_{- \infty}^{\infty} \frac{\Delta \omega}{2 \pi} \int_{-\frac{T}{2}}^{\frac{T}{2}} f_T(t) e^{-i n \omega_0 t} dt e^{i n \omega_0 t} fT(t)=2πΔω2T2TfT(t)einω0tdteinω0t

T → ∞ T \to \infty T时,令 n ω 0 = ω n \omega_0 = \omega nω0=ω ∫ − T 2 T 2 d t → ∫ − ∞ ∞ d t \int_{- \frac{T}{2}}^{\frac{T}{2}} dt \to \int_{- \infty}^{\infty} dt 2T2Tdtdt ∑ − ∞ ∞ Δ ω → ∫ − ∞ ∞ d ω \sum_{- \infty}^{\infty} \Delta \omega \to \int_{- \infty}^{\infty} d \omega Δωdω。代入到上面的式子:

lim ⁡ T → ∞ f T ( t ) = f ( t ) = 1 2 π ∫ − ∞ ∞ ( ∫ − ∞ ∞ f ( t ) e − i ω t d t ) e i ω t d ω \lim_{T \to \infty} f_T(t) = f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty} \left( \int_{- \infty}^{\infty} f(t) e^{- i \omega t} dt \right) e^{i \omega t} d \omega TlimfT(t)=f(t)=2π1(f(t)etdt)etdω

中间括号括起来的部分就是傅里叶变换函数 F ( ω ) = ∫ − ∞ ∞ f ( t ) e − i ω t d t F(\omega) = \int_{- \infty}^{\infty} f(t) e^{- i \omega t} dt F(ω)=f(t)etdt,而 f ( t ) = 1 2 π ∫ − ∞ ∞ f ( T ) e i ω t d ω f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty} f(T) e^{i \omega t} d \omega f(t)=2π1f(T)etdω是傅里叶变换的逆变换。


总结

在Part1中,认识到三角函数系的正交性,有:

∫ − π π s i n n x c o s m x = 0 ∫ − π π c o s n x s i n m x = 0 ∫ − π π c o s n x c o s m x = { 0 , m ≠ n 2 π , m = n = 0 π , m = n ≠ 0 ∫ − π π s i n n x c o s m x = { 0 , m ≠ n 或 m = n = 0 π , m = n ≠ 0 \begin{align} & \int_{-\pi}^{\pi} sin n x cos m x = 0 \\ & \int_{- \pi}^{\pi}cos n x sin m x = 0 \\ & \int_{- \pi}^{\pi} cos n x cos m x = \left\{ \begin{matrix} 0 , & m \ne n \\ 2 \pi , & m = n =0 \\ \pi , & m = n \ne 0 \end{matrix} \right. \\ & \int_{- \pi}^{\pi} sin n x cos m x = \left\{ \begin{matrix} 0, & m \ne n 或 m = n =0 \\ \pi , & m = n \ne 0 \end{matrix} \right. \end{align} ππsinnxcosmx=0ππcosnxsinmx=0ππcosnxcosmx= 0,2π,π,m=nm=n=0m=n=0ππsinnxcosmx={0,π,m=nm=n=0m=n=0

在Part2中,推导了 T = 2 π T = 2 \pi T=2π的周期函数的傅里叶级数展开为:

f ( x ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n x + b n s i n n x ) f(x) = \frac{a_0}{2} + \sum_{n=1}^{\infty}\left( a_n cos nx + b_n sin nx \right) f(x)=2a0+n=1(ancosnx+bnsinnx)

计算 a 0 a_0 a0,对 f ( x ) f(x) f(x)在区间 [ − π , π ] [-\pi, \pi] [π,π]之间积分,得到 a 0 = 1 π ∫ − π π f ( x ) d x a_0 = \frac{1}{\pi} \int_{-\pi}^{\pi}f(x)dx a0=π1ππf(x)dx
计算 a n a_n an,等式两边同乘以 c o s m x cos mx cosmx,然后计算在 [ − π , π ] [- \pi, \pi] [π,π]之间的积分,得到 a n = 1 π ∫ − π π f ( x ) c o s n x d x a_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) cos nx dx an=π1ππf(x)cosnxdx

计算 b n b_n bn,等式两边同乘以 s i n m x sin mx sinmx,然后计算在 [ − π , π ] [-\pi, \pi] [π,π]之间的积分,得到 b n = 1 π ∫ − π π f ( x ) s i n n x d x b_n = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) sin nx dx bn=π1ππf(x)sinnxdx

在Part3中,推导了 T = 2 L T=2L T=2L的周期函数的傅里叶级数展开为,令 x = π L t → t = L π x x = \frac{\pi}{L}t \to t = \frac{L}{\pi}x x=Lπtt=πLx,将 x x x代入Part2中的公式,得到:

f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n π L t + b n s i n n π L t ) a 0 = 1 L ∫ − L L f ( t ) d t a n = 1 L ∫ − L L f ( t ) c o s n π L t d t b n = 1 L ∫ − L L f ( t ) s i n n π L d t \begin{align} & f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} \left(a_n cos \frac{n \pi}{L}t + b_n sin \frac{n \pi}{L}t \right) \\ & a_0 = \frac{1}{L} \int_{-L}^{L} f(t) dt \\ & a_n = \frac{1}{L} \int_{-L}^{L} f(t) cos \frac{n \pi}{L}t dt \\ & b_n = \frac{1}{L} \int_{-L}^{L} f(t) sin \frac{n \pi}{L}dt \end{align} f(t)=2a0+n=1(ancosLt+bnsinLt)a0=L1LLf(t)dtan=L1LLf(t)cosLtdtbn=L1LLf(t)sinLdt

在Part4中,使用欧拉公式,用复指数的形式得到周期为 T T T的周期函数的傅里叶级数展开,该形式使得函数看起来更简洁,经过一系列变换,用 C n C_n Cn替代了上面复杂的系数,令 ω 0 = 2 π T \omega _0 = \frac{2 \pi}{T} ω0=T2π

f ( t ) = ∑ − ∞ ∞ C n e i n ω 0 t C n = 1 T ∫ 0 T f ( t ) e − i n ω 0 t d t f(t) = \sum_{- \infty}^{\infty} C_n e^{i n \omega_0 t} \\ C_n = \frac{1}{T} \int_{0}^{T} f(t) e^{-i n \omega_0 t}dt f(t)=Cneinω0tCn=T10Tf(t)einω0tdt

在Part5中,从傅里叶级数展开函数推导出傅里叶变换及反变换函数。当周期 T T T趋近于 ∞ \infty 时,周期函数会变为非周期函数,此时从离散数据变为了连续数据,令 ω = n ω 0 \omega = n \omega_0 ω=nω0;又有 ∑ − ∞ ∞ ω 0 → ∫ − ∞ ∞ d ω \sum_{- \infty}^{\infty} \omega_0 \to \int_{-\infty}^{\infty}d \omega ω0dω ∫ 0 T d t → ∫ − ∞ ∞ d t \int_{0}^{T} dt \to \int_{- \infty}^{\infty} dt 0Tdtdt,就得到非周期函数的傅里叶级数展开函数为:

f ( t ) = 1 2 π ∫ − ∞ ∞ ( ∫ − ∞ ∞ f ( t ) e − i ω t d t ) e i ω t d ω f(t) = \frac{1}{2 \pi} \int_{-\infty}^{\infty} \left ( \int_{- \infty}^{\infty} f(t)e ^{- i \omega t} dt \right) e^{i \omega t } d \omega f(t)=2π1(f(t)etdt)etdω

中间括号部分就是傅里叶变换函数$F(\omega) = \int_{- \infty}^{\infty} f(t) e^{-i \omega t} dt ,而 ,而 ,而f(t) = \frac{1}{2 \pi} \int_{- \infty}^{\infty}F(\omega) e^{i \omega t} d \omega$是傅里叶变换的逆变换。

相关文章:

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结

文章内容来自DR_CAN关于傅里叶变换的视频&#xff0c;本篇文章提供了一些基础知识点&#xff0c;比如三角函数常用的导数、三角函数换算公式等。 文章全部链接&#xff1a; 基础知识点 Part1&#xff1a;三角函数系的正交性 Part2&#xff1a;T2π的周期函数的傅里叶级数展开 P…...

第二章MyBatis入门程序

入门程序 创建maven程序 导入MyBatis依赖。pom.xml下导入如下依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependen…...

AgentBench::AI智能体发展的潜在问题(二)

从历史上看&#xff0c;几乎每一种新技术的广泛应用都会在带来新机遇的同时引发很多新问题&#xff0c;AI智能体也不例外。从目前的发展看&#xff0c;AI智能体的发展可能带来的新问题可能包括如下方面&#xff1a; 第二是AI智能体的普及将有可能进一步加剧AI造成的技术性失业。…...

C++中的运算符总结(4):逻辑运算符(上)

C中的运算符总结&#xff08;4&#xff09;&#xff1a;逻辑运算符&#xff08;上&#xff09; 8、逻辑运算 NOT、 AND、 OR 和 XOR 逻辑 NOT 运算用运算符!表示&#xff0c;用于单个操作数。表 1是逻辑 NOT 运算的真值表&#xff0c;这种运算将提供的布尔标记反转&#xff1…...

Flink安装与使用

1.安装准备工作 下载flink Apache Flink: 下载 解压 [dodahost166 bigdata]$ tar -zxvf flink-1.12.0-bin-scala_2.11.tgz 2.Flinnk的standalone模式安装 2.1修改配置文件并启动 修改&#xff0c;好像使用默认的就可以了 [dodahost166 conf]$ more flink-conf.yaml 启动 …...

CentOS系统环境搭建(七)——Centos7安装MySQL

centos系统环境搭建专栏&#x1f517;点击跳转 坦诚地说&#xff0c;本文中百分之九十的内容都来自于该文章&#x1f517;Linux&#xff1a;CentOS7安装MySQL8&#xff08;详&#xff09;&#xff0c;十分佩服大佬文章结构合理&#xff0c;文笔清晰&#xff0c;我曾经在这篇文章…...

3.react useRef使用与常见问题

react useRef使用与常见问题 文章目录 react useRef使用与常见问题1. Dom操作: useRef()2. 函数组件的转发: React.forwardRef()3. 对普通值进行记忆, 类似于一个class的实例属性4. 结合useEffect,只在更新时触发FAQ 1. Dom操作: useRef() // 1. Dom操作: useRef()let app doc…...

Axios使用CancelToken取消重复请求

处理重复请求&#xff1a;没有响应完成的请求&#xff0c;再去请求一个相同的请求&#xff0c;会把之前的请求取消掉 新增一个cancelRequest.js文件 import axios from "axios" const cancelTokens {}export const addPending (config) > {const requestKey …...

九耶丨阁瑞钛伦特-Spring boot与Spring cloud 之间的关系

Spring Boot和Spring Cloud是两个相互关联的项目&#xff0c;它们可以一起使用来构建微服务架构。 Spring Boot是一个用于简化Spring应用程序开发的框架&#xff0c;它提供了自动配置、快速开发的特性&#xff0c;使得开发人员可以更加轻松地创建独立的、生产级别的Spring应用程…...

总结,由于顺丰的问题,产生了电脑近期一个月死机问题集锦

由于我搬家&#xff0c;我妈搞顺丰发回家&#xff0c;但是没有检查有没有坏&#xff0c;并且我自己由于不可抗力因素&#xff0c;超过了索赔时间&#xff0c;反馈给顺丰客服&#xff0c;说超过了造成了无法索赔的情况&#xff0c;现在总结发生了损坏配件有几件&#xff0c;显卡…...

C#程序配置读写例子 - 开源研究系列文章

今天讲讲关于C#的配置文件读写的例子。 对于应用程序的配置文件&#xff0c;以前都是用的ini文件进行读写的&#xff0c;这个与现在的json类似&#xff0c;都是键值对应的&#xff0c;这次介绍的是基于XML的序列化和反序列化的读写例子。对于ini文件&#xff0c;操作系统已经提…...

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一种强大的工具&#xff0c;它可以处理和转换数据&#xff0c;然后将其呈现在视图中。它们可以被用于排序、格式化和过滤数据等任务。在本文中&#xff0c;我们将介绍Angular中的管道以及如何使用它们来简化开发过程。 管道的基…...

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…...

sqlserver数据库中把一张表中的数据复制到另一张表中

我们在使用ERP时经常会遇到&#xff0c;把老系统的单据直接拉过来使用&#xff0c;但是对应的数据却没有&#xff0c;为空&#xff0c;这时候就需要把老系统数据库里的数据复制一份到新系统里&#xff0c;&#xff08;方法如下&#xff09; 1、如果是整个表复制表达如下&#…...

el-table 多个表格切换多选框显示bug

今天写了个功能&#xff0c;点击左侧的树做判断&#xff0c;一级树节点显示系统页面&#xff0c;二级树节点显示数据库页面&#xff0c;三级树节点显示表页面。 数据库页面和表页面分别有2个el-table ,上面的没有多选框&#xff0c;下面的有多选框 现在出现bug&#xff0c;在…...

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的&#xff0c;通过添加以下命令行参数&#xff0c;可实现程序的窗口模式运行&#xff1a; -ResX1280 -ResY720 -WINDOWED 发布后的程序&#xff0c;启动时&#xff0c;提示显卡驱动警告&#xff08;如图1所示&#xff09;&#xff0c;但是…...

c语言strtol函数、strtod函数、strtoul函数浅悉

---------------- | strtol | ---------------- i.e. string to long long int strtol(const char *nptr, char **endptr, int base) strtol()会将nptr指向的字符串&#xff0c;根据参数base&#xff0c;按权转化为long int, 然后返回这个值。 参数base的范…...

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…...

LangChain手记 Chains

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Chains&#xff08;源代码可见&#xff09; Chains 直译链&#xff0c;表达的意思更像是对话链&#xff0c;对话链的背后是思维链 LLM Chain&#xff08;LLM链&#xff09; 首先介绍了一个最简单的例子&#xff0c…...

ONNX版本YOLOV5-DeepSort (rknn版本已经Ready)

目录 1. 前言 2. 储备知识 3. 准备工作 4. 代码修改的地方 5.结果展示 1. 前言 之前一直在忙着写文档&#xff0c;之前一直做分类&#xff0c;检测和分割&#xff0c;现在看到跟踪算法&#xff0c;花了几天时间找代码调试&#xff0c;看了看&#xff0c;展示效果比单纯的检…...

MySQL的约束

文章目录 1、约束的概念2、约束的分类2.1 主键约束2.1.1 概念2.1.2 主键操作 2.2 自增约束2.2.1 概念2.2.2 自增操作 2.3 唯一约束2.3.1 概念2.3.2 唯一操作 2.4 非空约束2.4.1 概念2.4.2 非空操作 2.5 默认约束2.5.1 概念2.5.2 默认操作 2.6 外键约束2.6.1 概念2.6.2 外键操作…...

Lnton羚通关于【PyTorch】教程:torchvision 目标检测微调

torchvision 目标检测微调 本教程将使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微调 预训练的Mask R-CNN 模型。 它包含 170 张图片&#xff0c;345 个行人实例。 定义数据集 用于训练目标检测、实例分割和人物关键点检测的参考脚本允许轻松支持添加…...

AMD fTPM RNG的BUG使得Linus Torvalds不满

导读因为在 Ryzen 系统上对内核造成了困扰&#xff0c;Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM 硬件随机数生成器的不满&#xff0c;并提出了禁用该功能的建议。 因为在 Ryzen 系统上对内核造成了困扰&#xff0c;Linus Torvalds 最近在邮件列表中表达了对 AMD fTPM…...

idea 转换为 Maven Project 的方法

选项&#xff1a; Add as Maven Project...

es1.7.2 按照_type先聚合,再按照时间二次聚合

// 设置查询条件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…...

pyqt5 如何修改QplainTextEdit 背景色和主窗口的一样颜色

如果您希望将 QPlainTextEdit 的背景颜色设置为与窗口背景相似的灰色&#xff0c;您可以使用窗口的背景颜色作为基准来设置 QPlainTextEdit 的背景颜色。以下是一个示例代码&#xff0c;展示如何实现这一点&#xff1a; from PyQt5.QtWidgets import QApplication, QMainWindo…...

解决使用element ui时el-input的属性type=number,仍然可以输入e的问题。

使用element ui时el-input的属性typenumber&#xff0c;仍然可以输入e&#xff0c; 其他的中文特殊字符都不可以输入&#xff0c;但是只有e是可以输入的&#xff0c;原因是e也输入作为科学计数法的时候&#xff0c;e是可以被判定为数字的&#xff0c; 但是有些场景是需要把e这种…...

ShardingSphere 可观测 SQL 指标监控

ShardingSphere并不负责如何采集、存储以及展示应用性能监控的相关数据&#xff0c;而是将SQL解析与SQL执行这两块数据分片的最核心的相关信息发送至应用性能监控系统&#xff0c;并交由其处理。 换句话说&#xff0c;ShardingSphere仅负责产生具有价值的数据&#xff0c;并通过…...

Redisson实现分布式锁示例

一、引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version></dependency>二、配置类 import org.redisson.Redisson; import org.redisson.api.RedissonClient;…...

使用Nginx作为一个普通代理服务器

使用Nginx作为一个普通代理服务器, 请不要用于违法用途哦 nginx作为一个反向代理工具&#xff0c;除了可以进行反向代理之外&#xff0c;还可以用来作为代理工具来使用&#xff0c;作为代理工具使用的步骤如下&#xff0c;这个配置目前支持80端口 Windows系统代理设置对应IP, …...

chatglm2-6b模型在9n-triton中部署并集成至langchain实践 | 京东云技术团队

一.前言 近期&#xff0c; ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布&#xff0c;引入了如下新特性&#xff1a; ①. 基座模型升级&#xff0c;性能更强大&#xff0c;在中文C-Eval榜单中&#xff0c;以51.7分位列第6&#xff1b; ②. 支持8K-32k的上下文&#xff1b…...

Shell编程之正则表达式(非常详细)

正则表达式 1.通配符和正则表达式的区别2.基本正则表达式2.1 元字符 &#xff08;字符匹配)2.2 表示匹配次数2.4 位置锚定2.5 分组 和 或者 3.扩展正则表达式4.部分文本处理工具4.1 tr 命令4.2 cut命令4.3 sort命令4.4 uniq命令 1.通配符和正则表达式的区别 通配符一般用于文件…...

RNN模型简单理解和CNN区别

目录 神经网络&#xff1a;水平方向延伸&#xff0c;数据不具有关联性 ​ RNN&#xff1a;在神经网络的基础上加上了时间顺序&#xff0c;语义理解 ​RNN: 训练中采用梯度下降&#xff0c;反向传播 ​ 长短期记忆模型 ​输出关系&#xff1a;1 toN&#xff0c;N to N 单入…...

【Axure高保真原型】JS日期选择器筛选中继器表格

今天和大家分享JS日期选择器筛选中继器表格的原型模板&#xff0c;通过调用浏览器的日期选择器&#xff0c;所以可以获取真实的日历效果&#xff0c;具体包括哪一年二月份有29天&#xff0c;几号对应星期几&#xff0c;都是真实的&#xff0c;获取日期值后&#xff0c;通过交互…...

android bp脚本

一。android大约从7.0开始引入 .bp文件代替以前的.mk文件&#xff0c;用于帮助android项目的编译配置文件。 二。mk文件转化为bp文件&#xff0c;可以使用下面命令转化&#xff0c;注意命令中>&#xff0c;这是写入文件。androidmk是android源码自带的工具&#xff0c;他可…...

Redis 数据库 NoSQL

目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值&#xff08;Key-Value&#xff09;存储数据库 列存储数据库 文档型数据库 图形&#xff08;Graph&#xff09;数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…...

RN 项目异常问题整理

常见问题 无法找到 CardStackStyleInterpolator StackViewStyleInterpolator 这个方法集来代替 CardStackStyleInterpolator的&#xff0c;这个方法集的路径也需要注意一下&#xff0c;在2.12.1版本之前&#xff0c; 该文件在react-navigation/src/views/StackView/中&#xf…...

STM8编程[TIM1多路PWM输出选项字节(Option Byte)操作和IO复用]

TIM1多路PWM输出选项字节(Option Byte)操作和IO复用 本文摘录于&#xff1a;https://blog.csdn.net/freeape/article/details/47008033只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 代码上要使用TIME1输出3路PWM,代码如下: void tim…...

Java算法_ 反转二叉树(LeetCode_Hot100)

题目描述&#xff1a;给你一棵二叉树的根节点 &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。root。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/8/16 13:18* 4*/public class In…...

C/C++ 标准模版库STL(持续更新版)

标准模版库STL 目录 算法库 栈 队列 向量 映射 列表 双向链表 集合 Iterator 送代器 <algorithm> 算法库 max, min 用于找出一组值中的最大值和最小值 swap 用于交换两个变量的值 sort 用于对一个范围内的元素进行排序 lower_bound, upper_bound 用于在已排序的容器…...

ARM(实验二)

uart4.h #ifndef __H__ #define __H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC/GPIO/UART4章节初始化 void hal_uart4_init();//发送一个字符函数 void hal_put_char(const char str);//发…...

由“美”出发 听艺术家林曦关于美育与智慧的探讨

不久前&#xff0c;林曦老师与我们的老朋友「十点读书」进行了一次线上直播&#xff0c;有关林曦老师十余年的书法教学&#xff0c;和传统美育的心得&#xff0c;以及因此诞生的新书《无用之美》。      这一次的直播&#xff0c;由“美”的主题出发&#xff0c;延伸出美育…...

Serial与Parallel GC之间的不同之处是什么?

Serial GC(串行垃圾回收器)和Parallel GC(并行垃圾回收器)都是Java虚拟机(JVM)中用于进行垃圾回收的两种基本算法。它们在性能、资源利用和回收效率等方面存在一些不同之处。下面是它们之间的详细比较&#xff1a; 1.工作方式 Serial GC&#xff1a;它是一种单线程的垃圾回收器…...

GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放

技术背景 我们在对接GB28181设备接入模块的时候&#xff0c;遇到这样的技术诉求&#xff0c;好多开发者期望能提供编码后&#xff08;H.264/H.265、AAC/PCMA&#xff09;数据对接&#xff0c;确保外部采集设备&#xff0c;比如无人机类似回调过来的数据&#xff0c;直接通过模…...

【java】为什么文件上传要转成Base64?

文章目录 1 前言2 multipart/form-data上传3 Base64上传3.1 Base64编码原理3.2 Base64编码的作用 4 总结 1 前言 最近在开发中遇到文件上传采用Base64的方式上传&#xff0c;记得以前刚开始学http上传文件的时候&#xff0c;都是通过content-type为multipart/form-data方式直接…...

SCSS 学习笔记 和 vscode下载live sass compiler插件配置

1、下载livelive sass compiler插件并配置 // 在 已有代码 下面 添加下面 代码&#xff0c;一般刚刚下载打开最后一行是&#xff1a;// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面复制进去保存就行"liveSassCompile.settings.autoprefix&qu…...

CSS中的字体属性有哪些值,并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ font-style⭐ font-weight⭐ font-size⭐ font-family⭐ font-variant⭐ line-height⭐ letter-spacing⭐ word-spacing⭐ font⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专…...

机器学习笔记之优化算法(十五)Baillon Haddad Theorem简单认识

机器学习笔记之优化算法——Baillon Haddad Theorem简单认识 引言 Baillon Haddad Theorem \text{Baillon Haddad Theorem} Baillon Haddad Theorem简单认识证明过程证明&#xff1a;条件 1 ⇒ 1 \Rightarrow 1⇒ 条件 2 2 2证明&#xff1a;条件 3 ⇒ 3 \Rightarrow 3⇒条件 1…...

HighTec工程用命令行编译

当工程中含有太多模型生成的代码的时候&#xff0c;如果修改了一部分代码&#xff0c;HighTec自带的编译器编译时间会非常的慢&#xff0c;有的需要半个小时甚至一个小时&#xff0c;这是因为每次修改之后HighTec都会从头重新检索更新&#xff0c;太浪费时间了&#xff0c;于是…...

【C语言】每日一题(找到所有数组中消失的数字)

找到所有数组中消失的数字&#xff0c;链接奉上。 这里简单说一下&#xff0c;因为还没有接触到动态内存&#xff0c;数据结构&#xff0c;所以知识有限&#xff0c;也是尽力而为&#xff0c;结合题库的评论区找到了适合我的解法&#xff0c;以后有机会&#xff0c;会补上各种…...