音频进阶学习八——傅里叶变换的介绍
文章目录
- 前言
- 一、傅里叶变换
- 1.傅里叶变换的发展
- 2.常见的傅里叶变换
- 3.频域
- 二、欧拉公式
- 1.实数、虚数、复数
- 2.对虚数和复数的理解
- 3.复平面
- 4.复数和三角函数
- 5.复数的运算
- 6.欧拉公式
- 三、积分运算
- 1.定积分
- 2.不定积分
- 3.基本的积分公式
- 4.积分规则
- 线性
- 替换法
- 分部积分法
- 5.定积分计算实例
- 6.简单描述积分在CFT作用
- 总结
前言
之前的一系列文章中,我们介绍了信号的分类、系统、以及在时域上对于序列的分析工具卷积公式和差分方程。
由于很多信号的处理从时域上并不能很好、快速的处理,并且基于分析我们得到一个结论,信号的波形可以分解为多个不同频率正弦波的组成,而这个分解的工具就是傅里叶变换。
本章中,会先对傅里叶变换做一个总的介绍,同时,因为学习傅里叶变化需要一定的数学知识,所以本章内容会先介绍傅里叶变换,然后再介绍关于傅里叶变换公式中的数学知识欧拉公式和积分方程。
|版本声明:山河君,未经博主允许,禁止转载
一、傅里叶变换
1.傅里叶变换的发展
傅里叶级数这个名字是由18世纪法国数学家傅里叶提出的,最开始是用于对热过程解析,但其研究“任意”的周期函数通过一定的分解,都能够表示为正弦和余弦信号的线性组合方式。
而后1829年,狄利赫里给出了傅里叶级数的收敛条件。
二十世纪初,傅里叶的思想被推广到非周期函数,成为了傅里叶变换,可以将任意信号分解成一系列正弦和余弦函数的和。但是此时傅里叶变换存在一些问题,对于非周期函数和时变信号,傅里叶变换无法处理。
直到20世纪70年代,引入的小波信号,解决了这些问题。
傅里叶变换可以化复杂的卷积运算为简单的乘积运算,而后离散形式的傅里叶变换可以利用数字计算机快速的算出,才最终通过计算机对于信号能够做快速的处理。
2.常见的傅里叶变换
- 连续傅里叶变换(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)e−jwtdtf(t)=2π1∫−∞∞F(ω)e−jwtdw - 定义:连续时间信号 f ( t ) f(t) f(t)和频域 F ( ω ) F(\omega) F(ω)互转
- 应用场景:连续信号频谱分析
- 离散傅里叶变换(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=0∑N−1x[n]e−jN2πkn,k=0,1,2,..,N−1x[n]=N1k=0∑N−1X[k]ejN2πkn - 定义:离散信号频域转换
- 应用场景:数字信号处理(音频计算机处理)
- 短时傅里叶变换(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)e−jwτdτ - 定义:在信号的时间维度上使用滑动窗口,分段计算傅里叶变换
- 应用场景:非平稳信号分析(如语音处理、地震波分析)
- 离散时间傅里叶变换(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]e−jwn - 定义: 离散时间信号的频谱分析
- 应用场景:数字信号的理论分析
- 傅里叶级数
- 公式:
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=0∑∞cnejnω0t - 定义: 将周期信号分解为多个正弦和余弦函数的线性组合。
- 应用场景: 信号周期性分析
- 小波变换(Wavelet Transform, WT)(多种不做展示)
- 定义: 一种局部化的傅里叶分析,使用小波函数代替正弦波进行信号分析。
- 特点: 提供多分辨率分析。
- 应用场景: 数据压缩、信号去噪、特征提取。
- 快速余弦/正弦变换(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,{a、b∈R,a=0、b=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世纪希腊数学家海伦,而给出“虚数”这一名称的是法国数学家笛卡尔(1596~1650)发表出来的。
刚开始复数的出现不被人们理解,就像 4 − 3 4-3 4−3人们可以很好理解,那么 3 − 4 3-4 3−4呢?这到底是什么意思?你怎么能从 4 头奶牛中拿走 3 头奶牛?你怎么能比没有少呢?于是出现了可以跟踪方向的+、-号,那么就可以理解为你还欠我一头奶牛没给我。
在数学家的目标中,数学体系的一部分就是要确保每个方程都有解,如果 i 2 > 0 i^2 > 0 i2>0很好理解,那么 i 2 = − 1 i^2 = -1 i2=−1该怎么理解呢,于是就出现了无法在一维实数线上找到对应值的数——虚数。 -
几何意义
首先思考一个问题,什么样的 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+1∗i,之前我们说过 i i i在几何种表示逆时针旋转90°,我们可以看到 1 + 1 ∗ i 1 + 1 * i 1+1∗i的表示为逆时针旋转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+1∗i)+(1+3∗i)=(4+4∗i) - 乘法
假如现在有 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+1∗i)∗(1+1∗i)=3∗1+3∗i+1∗i+i2=2+4i,那么这个有什么意义呢,如下图:
上文我们说过 1 + 1 ∗ i 1 + 1 * i 1+1∗i的表示为逆时针旋转45°,而上面的最终极坐标的位置也是移动了45°,事实上复数的乘法代表了:模长的拉长(下文中解释),以及极坐标的旋转。
6.欧拉公式
欧拉公式(Euler’s formula)是复分析中的一个重要公式,它展示了复指数函数和三角函数之间的关系。公式的形式为(推导过程太复杂不进行赘述,有兴趣可以自己百度看):
e i θ = cos θ + i ∗ sin θ e^{i\theta} = \cos\theta + i*\sin\theta eiθ=cosθ+i∗sinθ
我们根据欧拉公式得到复数的表示形式为:
z = r ∗ e i θ z = r * e^{i\theta} z=r∗eiθ
假设有两个复数:
- z 1 = 2 ∗ e i 30 ° z_1 = 2 * e^{i30°} z1=2∗ei30°:表示模长为2,角度为30°
- z 2 = 3 ∗ e i 45 ° z_2 = 3 * e^{i45°} z2=3∗ei45° :表示模长为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°} z1∗z2=2∗3∗ei(30°+45°)=6∗ei75°:表示模长为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 ln∣x∣+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 ∫c∗f(x)dx=c∗∫f(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=uv−∫vdu
例如:
∫ 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=xex−∫exdx=xex−ex+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=nb−a,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=n→∞limi=1∑nf(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+1−2+112+1=38−31≈2.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)e−jwtdt
f ( t ) f(t) f(t)是时域信号, F ( W ) F(W) F(W)是对应的频域信号,积分的作用是将 f ( t ) f(t) f(t)和 e − j w t e^{-jwt} e−jwt做点积,用来测量 f ( t ) f(t) f(t)在频率 W W W上的投影。换句话说,积分计算了信号在特定频率下的权重(即幅值和相位)。
具体详细过程受文章篇幅影响,在之后的文章中给出详细解释。
总结
在本篇文章中,先介绍了对于傅里叶变换的历史、傅里叶变换的多个公式,以及对于公式中所需要的数学知识做了详细的介绍。结合图形的方式理解欧拉公式中,复指数函数和三角函数的关系,使用复指数函数来表述信号。同时介绍了积分的运算知识,简单描述了积分在傅里叶变换中的作用。
在一篇文章中,将深入解析傅里叶变换公式以及它的应用。
如果对您有所帮助,请帮忙点个赞吧
相关文章:
音频进阶学习八——傅里叶变换的介绍
文章目录 前言一、傅里叶变换1.傅里叶变换的发展2.常见的傅里叶变换3.频域 二、欧拉公式1.实数、虚数、复数2.对虚数和复数的理解3.复平面4.复数和三角函数5.复数的运算6.欧拉公式 三、积分运算1.定积分2.不定积分3.基本的积分公式4.积分规则线性替换法分部积分法 5.定积分计算…...
沟通的艺术,学会转移矛盾
我的一位好友,资深项目经理,同时也是我公益课程的热心志愿者,最近向我倾诉了他在团队沟通上的挑战。 他发现,尽管辅导学员时感到轻松愉快,但与自己团队成员的沟通却充满挫折。 我询问了他的沟通方式,他解释…...
测评|携程集团25年社招在线测评北森题库、真题分析、考试攻略
携程集团社招入职测评北森题库主要考察以下几个方面: 1. **言语理解**:这部分主要测试应聘者运用语言文字进行思考和交流、迅速准确地理解和把握文段要旨的能力。 2. **资料分析**:包括文字题和图表题,考察应聘者快速找出关键信息…...
C++(进阶) 第4章 map和set的使⽤
C(进阶) 第4章 map和set的使⽤ 文章目录 前言一、序列式容器和关联式容器二、set1. insert2.迭代器遍历3.范围for4.erase5.count6.lower_bound和upper_bound 三、multiset总结 前言 上一篇博客写了二叉搜索树,这一篇博客会在上一篇博客原来的上在深入介…...
数独游戏app制作拆解(之三)——数字候选区实现
所谓的数据候选区就是这个: 数字候选区功能及实现: 说明:这部分其实也是textview. 本区功能: 一、实现数字显示到显示区。点击显示区选定某个格子后,再点击这里的数字,会在格子内显示相应的数字。在编辑…...
数据结构——排序
*排序属于数据的运算 1、定义:将一组杂乱无章的数据按一定规律顺次排列一起,即将无序序列排成一个有序序列的运算。 (如果参加排序的数据结构包含多个数据域,那么排序往往是针对其中某个域而言) 2、排序的应用十分广泛:程序中间接应用(二分查找、最短路径、最小生成树…...
制造业4.0:AI与机器人如何重塑生产线
引言:从传统到未来的转型 在轰鸣的生产线上,传统制造业曾以规模化生产和成本效益为核心竞争力,推动了全球工业化进程。然而,面对现代市场的多样化需求和激烈竞争,这种模式正暴露出越来越多的局限性:产能过剩…...
Fastdfs V6.12.1集群部署(arm/x86均可用)
文章目录 一、 Fastdfs 介绍二、部署 信息三、步骤tracker/storage 机器的 compose 内容storage 机器的 composetracker 与 storage 启动目录层级与配置文件测试测试集群扩容与缩减注意事项 一、 Fastdfs 介绍 FastDFS 是一款高性能的分布式文件系统,特别适合用于存…...
【学习笔记】深入浅出详解Pytorch中的View, reshape, unfold,flatten等方法。
文章目录 一、写在前面二、Reshape(一)用法(二)代码展示 三、Unfold(一)torch.unfold 的基本概念(二)torch.unfold 的工作原理(三) 示例代码(四&a…...
解决Presto dirver timestamp时区问题
#bigdata/metabase 一、背景介绍 1、Presto版本 使用阿里云集群的版本 EMR-5.4.2,Presto的版本为338; Facebook后续不再维护,Trino 351为首个版本 2、Metabase版本 历史版本为0.38.4,新版本为0.51.5 3、0.38.4 cast to time…...
【优选算法】Prefix-Kage:前缀和的算法影(上)
文章目录 1.概念解析2.代码实现2.1【模版】前缀和(一维)2.1.1 原理2.1.2 代码实现 2.2【模版】前缀和(二维)2.2.1 原理2.2.2 代码实现 希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 本篇是优选算…...
中阳科技:量化交易模型的技术革新与实践应用
在金融市场日益复杂化的今天,量化交易作为数据驱动的现代化交易方式,已成为金融领域发展的关键方向。中阳科技凭借深厚的技术积累与创新能力,积极探索量化交易模型的优化与应用,开辟了智能金融新局面。 量化交易的优势与市场前景…...
golang 判断一个点是否在一个多边形内
我有一需求为:判断一个点(经纬度范围)是否在一个多边形范围内(多个经纬度点) 这里我借助几何库( github.com/paulmach/orb)来处理地理空间数据 可以通过在线获取经纬度来确认代码正确性 packa…...
图论笔记1
1.1邻接矩阵储存法 //创建:二维数组vector<vector<int>> graph(n,vector<int>(n,0));//储存for(int i0;i<m;i){int x1,x2;cin>>x1>>x2;graph[x1-1][x2-1]1;}1.2邻接表储存法 补充:c中的list是链表 链接 //创建:数组…...
大模型QLoRA微调——基于Qwen2-7B的自动化病历摘要生成系统
01 项目简介 (1)项目背景 医疗文档中包含大量的诊疗信息,例如疾病诊断、手术名称、解剖部位、药物使用以及影像和实验室检查结果。这些信息是医疗数据分析的核心,但由于医疗文本内容复杂、格式多样,提取这些关键内容…...
CTFHub-ssrf
技能树--Web--SSRF 内网访问 开启题目 尝试访问位于127.0.0.1的flag.php吧 进入环境 根据提示输入即可 127.0.0.1/flag.php 伪协议读取文件 开启题目 尝试去读取一下Web目录下的flag.php吧 进入环境,根据提示输入 file:///var/www/html/flag.php 鼠标右键查看…...
使用ElasticSearch实现全文检索
文章目录 全文检索任务描述技术难点任务目标实现过程1. java读取Json文件,并导入MySQL数据库中2. 利用Logstah完成MySQL到ES的数据同步3. 开始编写功能接口3.1 全文检索接口3.2 查询详情 4. 前端调用 全文检索 任务描述 在获取到数据之后如何在ES中进行数据建模&a…...
【docker】容器编排之docker swarm
Docker Swarm容器编排详细讲解 Docker Swarm是Docker的原生容器编排工具,它通过将多个Docker引擎组合成一个集群来实现高效的容器部署和管理。 Swarm提供了服务发现、负载均衡、扩展、自动恢复等功能,能够让开发者和运维人员以更简便的方式管理容器化应…...
微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
文章目录 1、index.wxml2、index.js3、index.wxss1、index.wxml <!--index.wxml--> <view class="container"><view class="code-input-container"><view class="code-input-boxes"><!-- <block wx:for="{{…...
SCAU期末笔记 - Linux系统应用与开发教程样卷解析(2024版)
我真的不理解奥,为什么会有给样卷不自带解析的,对答案都没得对,故整理一篇 样卷1 一、选择题 1、为了遍历shell脚本调用时传入的参数,需要在shell脚本中使用_____。 A.$#表示参数的个数B.S表示所有参数C.$0表示脚本名D.$1表示…...
2024 年贵州技能大赛暨全省第二届数字技术应用职业技能竞赛“信息通信网络运行管理员”赛项--linux安全题
Linux操作系统渗透测试 Nmap -sS -p- ip 扫描 这题有俩种做法,一种用3306端口,另一种用48119端口 用48119端口是最简单的做法 nc 连接这个端口如何修改root密码 ssh连接 这样我们就成功的拿到root权限 1.通过本地PC中渗透测试平台Kali对服务器场景进…...
CTFshow-php特性(Web125-150)
CTFshow-php特性(Web125-150) Web125 <?php error_reporting(0); highlight_file(__FILE__); include("flag.php"); $a$_SERVER[argv]; $c$_POST[fun]; if(isset($_POST[CTF_SHOW])&&isset($_POST[CTF_SHOW.COM])&&!isset($_GET[fl0g])){if(!p…...
机器学习一点基础
人工智能(Artificial Intelligence, AI)和机器学习(Machine Learning, ML)是当今最热门的技术领域之一。然而,初学者往往面对大量的术语和技术细节,不知道从何入手。本文将以通俗易懂的方式介绍机器学习的基…...
【C++】 While循环高级分析与实践扩展
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯While 循环基础知识1.1 基本语法形式1.2 if 与 while 的区别1.3 循环结构比较 💯While 循环实例分析2.1 执行结果2.2 计算流程分析 💯While 循环注意…...
React Native状态管理器Redux、MobX、Context API、useState
Redux、MobX、Context API、useState都是React中用于状态管理的工具,但它们各自有不同的特点和使用场景。 Redux 介绍: Redux是一个JavaScript状态管理库,最初由Dan Abramov和Andrew Clark于2015年开发。它基于Flux架构,强调状态…...
【AI系列】Paddle Speech安装指南
文章目录 环境依赖1. 安装Python1.1 下载Python安装包1.2 安装gcc1.3 安装依赖库1.4 编译和安装Python1.5 配置环境变量 2. 安装PaddlePaddle3. 安装PaddleSpeech4. 运行PaddleSpeech5. 解决常见问题5.1 错误:libssl.so.1.1解决方法: 5.2 错误࿱…...
【学习笔记总结】华为云:应用上云后的安全规划及设计
一、背景和问题 数字化时代,随着信息技术的飞速发展,企业和各类组织纷纷将自身的应用程序迁移至云端。云计算凭借其诸多优势,如成本效益、可扩展性、灵活性以及便捷的资源共享等,已然成为了现代业务运营的重要支撑。 今年…...
数据可视化-2. 条形图
目录 1. 条形图适用场景分析 1.1 比较不同类别的数据 1.2 展示数据分布 1.3 强调特定数据点 1.4 展示时间序列数据的对比 1.5 数据可视化教育 1.6 特定领域的应用 2. 条形图局限性 3. 条形图图代码实现 3.1 Python 源代码 3.2 条形图效果(网页显示&#…...
设置Qt程序开机自启动(windows版本)
前言 本文展示在windows环境下,通过代码实现更改系统注册表的方式来实现程序的开机自动启动。 一、注册表 需要更改的系统注册表为: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run 二、代码演示 1.头文件 头文件autorun.h #ifndef …...
LeetCode hot100-80
https://leetcode.cn/problems/partition-labels/description/?envTypestudy-plan-v2&envIdtop-100-liked 763. 划分字母区间 已解答 中等 相关标签 相关企业 提示 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。…...
Ubuntu批量修改文件名
文章目录 批量重命名文件:Ubuntu下使用find命令结合sed和mv参考 批量重命名文件:Ubuntu下使用find命令结合sed和mv 在日常开发和文件管理中,有时我们需要批量重命名一批文件,比如将文件名中的某个特定字符串替换为另一个字符串。…...
CVMJ 2024 | StyleDiffusion: 基于Prompt嵌入的真实图像反演和文本编辑
论文:《StyleDiffusion: Prompt-Embedding Inversion for Text-Based Editing》 代码:https://github.com/sen-mao/StyleDiffusionhttps://github.com/sen-mao/StyleDiffusion 问题背景 已有一些工作利用预训练扩散模型进行真实图像的编辑。这些方…...
UE5 帧数优化思路
A、思路 1、直接在GM的事件beginplay中改可延展性相对质量级别, 改为1或2,最简单粗暴的方式,而效果明显,帧数提高一倍,GPU占用率与显存占用直接下降一大截。在物体密集的地方卡顿会缓解很多,物体少的地方…...
【Java】正则表达式基础题+场景题练习
基础语法可以看我另一篇博客:正则表达式【规则】【实例】【技巧】_正则规则-CSDN博客 输出结果全是true public class StringRegexTest {public static void main(String[] args) {System.out.println(matchSingleNum("1"));System.out.println(matchMul…...
qq资料修改/空间操作
此工具仅支持 空间ck导入操作 发布说说 转发别人的动态分享 支持修改头像 修改昵称 空间权限获取 说说内容自定义 说放置说说图片 同样也支持多ck操作 详细支持如下 发布说说 转发分享 修改头像 修改昵称 允许空间 发送分享 设置访客权限 问题空间 清空相册 删除说说 封存三天…...
数据结构—图
目录 一、图的定义 二、图的基本概念和术语 2.1有向图 2.2无向图 2.3简单图 2.4多重图 2.5完全图 2.6子图 2.7连通、连通图和连通分量 2.8强连通图、强联通分量 2.9生成树,生成森林 2.10顶点的度、入度和出度 2.11边的权和网 2.12稠密图、稀疏图 2.1…...
【Prompt Engineering】2.迭代优化
一、环境配置 配置使用zhipuai API 的环境。安装 zhipuai 库,并设置 API_KEY。封装 zhipuai 接口的函数,参数为 Prompt,返回对应结果。 from zhipuai import ZhipuAI zhipu_client ZhipuAI(api_key"") # 一个封装 OpenAI 接口…...
每日十题八股-2024年12月16日
1.垃圾回收算法哪些阶段会stop the world? 2.minorGC、majorGC、fullGC的区别,什么场景触发full GC 3.垃圾回收器 CMS 和 G1的区别? 4.什么情况下使用CMS,什么情况使用G1? 5.G1回收器的特色是什么? 6.GC只会对堆进行GC吗&#x…...
使用 imageio 库轻松处理图像与视频
使用 imageio 库轻松处理图像与视频 imageio 是一个 Python 库,用于读取和写入多种图像和视频格式。它功能强大、易于使用,广泛应用于图像处理、视频编辑和数据可视化等领域。本篇文章将介绍 imageio 的基础功能、常见用法以及高级操作。 一、安装 imag…...
MR30分布式IO模块:驱动物流传输机高效升级
在日新月异的物流行业中,效率与智能化已成为推动企业转型升级的关键驱动力。随着物联网、大数据、云计算等技术的深度融合,传统物流传输机正逐步向智能化、自动化迈进。在这场技术革命中,明达技术MR30分布式IO模块以其独特的优势,…...
【开源免费】基于SpringBoot+Vue.JS在线竞拍系统(JAVA毕业设计)
本文项目编号 T 013 ,文末自助获取源码 \color{red}{T013,文末自助获取源码} T013,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...
Docker
文章目录 仓库容器核心组件网络模式挂载方式Docker常用指令Compose常用指令代码 仓库 国内镜像仓库地址 修改方法见: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 科大镜像:https://docker.mirrors.ustc.edu.cn/网易:ht…...
上海艾一公司-运维工程师知识点备战
1.AD域控(ActionDirectory活动目录) ad域的作用:批量管理主机和用户(所以数量要多用这个才合适) 前置1:VM安装Windows镜像 2.IT资产管理 3.会议室管理...
程序员实用工具之推荐(Recommendations for Practical Tools for Programmers)
11款程序员实用工具,老少皆宜 优秀程序员之所以优秀的原因并不一定是他写代码的速度比所有人都快,但他解决事情的效率一定是比很多人都要高的,提升工作效率的方法并不需要我们十八般武艺样样精通,有时候使用好的工具就能帮助我们大…...
win服务器的架设、windows server 2012 R2 系统的下载与安装使用
文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件(1)新建虚拟机(2)设置虚拟机(3)打开虚拟机 windows server 2012(4)进…...
当服务器数据包丢失该怎样进行解决?
当企业面对服务器数据包丢失的情况,都有哪些解决策略呢? 首先对于数据丢失,最直接的方法就是尝试进行数据恢复,数据恢复过程通常包括使用数据恢复软件扫描丢失数据的磁盘驱动器,以此来尝试找回丢失的文件,在…...
go语言 爬虫 钉钉群机器人
第一步:钉钉新建一个群机器人 钉钉创建群机器人文档:https://open.dingtalk.com/document/orgapp/custom-robot-access 安全设置选择签名 签名设置文档:https://open.dingtalk.com/document/robots/customize-robot-security-settings 第二步…...
14篇--模板匹配
原理 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功。 匹配方法 1. 平方差匹配TM_SQDIFF 以模板图与目标图所对应的像素值使用…...
Cadence学习笔记 5 四路HDMI原理图绘制
基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制 目录 5、四路HDMI原理图绘制 快捷键总结:…...
一文详解“分治—归并“在算法中的应用
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 这里的归并与我们在数据结构中学习的归并排序是一样的,我们可以先来复习一下归并排序。用一道题来帮助我们回想起归…...