主頁 >  其他 > 傅里葉變換學習筆記(一)

傅里葉變換學習筆記(一)

2021-02-01 14:57:49 其他

強烈推薦“掐死教程”
傅里葉變換是數字信號處理中最基本的方法之一,是溝通時域和頻域的橋梁,本文試圖用通俗語言對傅里葉分析中常見的一些難點加以解釋,更嚴格的公式推導和幾何證明在知乎上有更多的大神解答,翻看知乎上多位大神的解答,大體分為兩類:一派是以“掐死教程”為代表的圖形派,包含大量的圖形影片輔助理解;另一派是公式派,其內容是對公式進行嚴格的推導、證明,而這兩派中對一些關鍵性的細節默認為常識并不加以解釋,而這些細節問題對整個問題的理解產生障礙,這篇文章更多的從信號處理的初學者角度出發,解釋傅里葉變換的同時對一些相對“弱智”但又非常關鍵的問題進行討論,

0.傅里葉級數(FS)

在討論傅里葉變換之前,首先要解釋“正交基”這一概念,在平面直角坐標系下,任意一個向量均能用單位向量x、y表示,其中“正交”的意思是表示向量的基底之間的內積為零,在二維空間下,兩個相互垂直的向量即為正交,
在這里插入圖片描述

一個通俗的例子是計算機中對顏色的表示,任意顏色的光均可由三基色紅色、綠色、藍色的疊加來表示,
在這里插入圖片描述

在這個例子中,紅色、綠色、藍色為三個正交基,
那么對于任意的一維信號,是否也能表示為正交基的線性組合呢?如果可以,正交基是什么?
根據讓·巴普蒂斯·約瑟夫·傅里葉男爵的猜測,任意的周期函式均能表示成不同頻率的正弦函式余弦函式的線性組合,假設周期為T的信號x(t),可表示為:
x ( t ) = C + ∑ n = 1 ∞ [ a n cos ? ( n ω 0 t ) + b n sin ? ( n ω 0 t ) ] x\left(t\right)=C+\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right] x(t)=C+n=1?[an?cos(nω0?t)+bn?sin(nω0?t)](1)
式中 ω 0 = 2 π / T \omega_0=2\pi/T ω0?=2π/T式為信號x(t)的傅里葉級數表示,這里, [ 1 , c o s ( ω 0 ) , c o s ( 2 ω 0 t ) , … , c o s ( n ω 0 t ) , s i n ( ω 0 t ) , s i n ( 2 ω 0 t ) , … , s i n ( n ω 0 t ) ] [1,cos(\omega_0), cos(2\omega_0t),…,cos(n\omega_0t),sin(\omega_0t),sin(2\omega_0t),…,sin(n\omega_0t)] [1,cos(ω0?),cos(2ω0?t),,cos(nω0?t),sin(ω0?t)sin(2ω0?t),,sin(nω0?t)]為一組正交基,其正交性可由三角函式的三個性質證明:
∫ t 0 t 0 + k T sin ? ( n ω 0 t ) sin ? ( m ω 0 t ) = 0 \int_{t_0}^{t_0+kT}{\sin{\left(n\omega_0t\right)}\sin{\left(m\omega_0t\right)}}=0 t0?t0?+kT?sin(nω0?t)sin(mω0?t)=0,m、n為自然數,m≠n
∫ t 0 t 0 + k T cos ? ( n ω 0 t ) cos ? ( m ω 0 t ) = 0 \int_{t_0}^{t_0+kT}{\cos{\left(n\omega_0t\right)}\cos{\left(m\omega_0t\right)}}=0 t0?t0?+kT?cos(nω0?t)cos(mω0?t)=0,m、n為自然數,m≠n

∫ t 0 t 0 + k T sin ? ( n ω 0 t ) cos ? ( m ω 0 t ) = 0 \int_{t_0}^{t_0+kT}{\sin{\left(n\omega_0t\right)}\cos{\left(m\omega_0t\right)}}=0 t0?t0?+kT?sin(nω0?t)cos(mω0?t)=0,m、n為自然數
根據上式, [ 1 , c o s ( ω 0 ) , c o s ( 2 ω 0 t ) , … , c o s ( n ω 0 t ) , s i n ( ω 0 t ) , s i n ( 2 ω 0 t ) , … , s i n ( n ω 0 t ) ] [1,cos(\omega_0), cos(2\omega_0t),…,cos(n\omega_0t),sin(\omega_0t),sin(2\omega_0t),…,sin(n\omega_0t)] [1,cos(ω0?),cos(2ω0?t),,cos(nω0?t),sin(ω0?t)sin(2ω0?t),,sin(nω0?t)]中任意兩個元素在信號周期內積分為0,滿足正交條件,

那么對于未知的信號x(t),如何確定各個基的系數C、 a n a_n an? b n b_n bn?呢?還是根據正交性,
首先確定直流分量C,在信號的最小周期內對式1兩邊取定積分得:
∫ 0 T x ( t ) d t = ∫ 0 T C d t + ∫ 0 T ∑ n = 1 ∞ [ a n cos ? ( n ω 0 t ) + b n sin ? ( n ω 0 t ) ] d t \int_{0}^{T}x\left(t\right)dt=\int_{0}^{T}Cdt+\int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right]dt} 0T?x(t)dt=0T?Cdt+0T?n=1?[an?cos(nω0?t)+bn?sin(nω0?t)]dt
等式右側第二項中,根據三角函式的性質,在任意周期內對sin和cos的定積分均為0,則有:
∫ 0 T x ( t ) d t = ∫ 0 T C d t \int_{0}^{T}x\left(t\right)dt=\int_{0}^{T}Cdt 0T?x(t)dt=0T?Cdt
C = 1 T ∫ 0 T x ( t ) d t C=\frac{1}{T}\int_{0}^{T}x\left(t\right)dt C=T1?0T?x(t)dt
接下來求 a n a_n an? b n b_n bn?
式1兩側同乘 s i n ( m ω 0 t ) sin(m\omega_0t) sin(mω0?t),在[0,T]區間取定積分:
∫ 0 T x ( t ) ? sin ? ( m ω 0 t ) d t = ∫ 0 T C ? sin ? ( m ω 0 t ) d t + ∫ 0 T ∑ n = 1 ∞ [ a n cos ? ( n ω 0 t ) ? sin ? ( m ω 0 t ) + b n sin ? ( n ω 0 t ) ? sin ? ( m ω 0 t ) ] d t \int_{0}^{T}{x\left(t\right)\bullet\sin(m\omega_0t)}dt =\int_{0}^{T}{C\bullet\sin(m\omega_0t)dt}+\int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}+b_n\sin{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}\right]dt} 0T?x(t)?sin(mω0?t)dt=0T?C?sin(mω0?t)dt+0T?n=1?[an?cos(nω0?t)?sin(mω0?t)+bn?sin(nω0?t)?sin(mω0?t)]dt
上式中,根據正交性質:
∫ 0 T C ? sin ? ( m ω 0 t ) d t ≡ 0 \int_{0}^{T}{C\bullet\sin{\left(m\omega_0t\right)dt}}\equiv0 0T?C?sin(mω0?t)dt0
∫ 0 T ∑ n = 1 ∞ [ a n sin ? ( n ω 0 t ) ? cos ? ( m ω 0 t ) ] d t ≡ 0 \int_{0}^{T}{\sum_{n=1}^{\infty}\left[a_n\sin{\left(n\omega_0t\right)\bullet\cos(m\omega_0t)}\right]dt}\equiv0 0T?n=1?[an?sin(nω0?t)?cos(mω0?t)]dt0
對于 ∫ 0 T ∑ n = 1 ∞ [ b n sin ? ( n ω 0 t ) ? sin ? ( m ω 0 t ) ] d t \int_{0}^{T}\sum_{n=1}^{\infty}\left[b_n\sin{\left(n\omega_0t\right)\bullet\sin(m\omega_0t)}\right]dt 0T?n=1?[bn?sin(nω0?t)?sin(mω0?t)]dt當且僅當m=n是積分不為0,當m=n時有:
∫ 0 T ∑ n = 1 ∞ [ b n sin ? ( n ω 0 t ) ? sin ? ( m ω 0 t ) ] d t = ∫ 0 T b n sin ? 2 ( n ω 0 t ) d t = b n 2 ∫ 0 T ( 1 ? c o s ( 2 n ω 0 t ) ) d t = b n 2 T \int_{0}^{T}{\sum_{n=1}^{\infty}\left[b_n\sin{\left(n\omega_0t\right)\bullet\sin{\left(m\omega_0t\right)}}\right]dt} =\int_{0}^{T}{b_n\sin^2\left(n\omega_0t\right)dt} =\frac{b_n}{2}\int_{0}^{T}\left(1-cos\left(2n\omega_0t\right)\right)dt=\frac{b_n}{2}T 0T?n=1?[bn?sin(nω0?t)?sin(mω0?t)]dt=0T?bn?sin2(nω0?t)dt=2bn??0T?(1?cos(2nω0?t))dt=2bn??T
帶入式 得:
b n = 2 T ∫ 0 T x ( t ) ? sin ? ( m ω 0 t ) d t b_n=\frac{2}{T}\int_{0}^{T}{x\left(t\right)\bullet\sin(m\omega_0t)}dt bn?=T2?0T?x(t)?sin(mω0?t)dt
同理,式1兩側同乘 c o s ( m ω 0 t ) cos(m\omega_0t) cos(mω0?t),即可求出 a n a_n an?得:
a n = 2 T ∫ 0 T x ( t ) ? cos ? ( m ω 0 t ) d t a_n=\frac{2}{T}\int_{0}^{T}{x\left(t\right)\bullet\cos(m\omega_0t)}dt an?=T2?0T?x(t)?cos(mω0?t)dt
至此,常數C、 a n a_n an? b n b_n bn?已被計算求得,周期x(t)可由頻率不同的正弦函式和余弦函式唯一表示,

但是,,,,,

在大多數的教材中,傅里葉級數是這樣表示的:
x ( t ) = ∑ n = ? ∞ + ∞ c n e i n ω 0 t x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}} x(t)=n=?+?cn?einω0?t
???
相信對于剛剛入門信號處理的童鞋來說,這個公式具有很強的勸退效果(手動捂臉!),
其實呢,部分童鞋對于這個等式的疑惑主要有兩點:
說好的用sin和cos表示呢?咋還不見了呢?
怎么還整出來了復數?

首先介紹一下被稱為“上帝公式”的歐拉公式
e i θ = c o s θ + i s i n θ e^iθ=cosθ+isinθ eiθ=cosθ+isinθ
它將三角函式復指數函式結合了起來,關于它的推導程序和幾何涵義,詳見傳送門:

那么根據歐拉公式,我們很容易將sin和cos用復指數形式表示:
s i n θ = e i θ ? e ? i θ 2 i sin\theta=\frac{e^{i\theta}-e^{-i\theta}}{2i} sinθ=2ieiθ?e?iθ?
c o s θ = e i θ + e ? i θ 2 cos\theta=\frac{e^{i\theta}+e^{-i\theta}}{2} cosθ=2eiθ+e?iθ?
傅里葉級數變為:
x ( t ) = C + ∑ n = 1 ∞ [ a n cos ? ( n ω 0 t ) + b n sin ? ( n ω 0 t ) ] x\left(t\right)=C+\sum_{n=1}^{\infty}\left[a_n\cos{\left(n\omega_0t\right)}+b_n\sin{\left(n\omega_0t\right)}\right] x(t)=C+n=1?[an?cos(nω0?t)+bn?sin(nω0?t)]
= C + ∑ n = 1 ∞ [ a n ( e i n ω 0 t + e ? i n ω 0 t ) 2 + b n ( e i n ω 0 t ? e ? i n ω 0 t ) 2 i ] =C+\sum_{n=1}^{\infty}\left[\frac{a_n\left(e^{in\omega_0t}+e^{-in\omega_0t}\right)}{2}+\frac{b_n\left(e^{in\omega_0t}-e^{-in\omega_0t}\right)}{2i}\right] =C+n=1?[2an?(einω0?t+e?inω0?t)?+2ibn?(einω0?t?e?inω0?t)?]
= C + ∑ n = 1 ∞ [ a n ( e i n ω 0 t + e ? i n ω 0 t ) 2 ? b n i ( e i n ω 0 t ? e ? i n ω 0 t ) 2 ] =C+\sum_{n=1}^{\infty}\left[\frac{a_n\left(e^{in\omega_0t}+e^{-in\omega_0t}\right)}{2}-\frac{b_ni\left(e^{in\omega_0t}-e^{-in\omega_0t}\right)}{2}\right] =C+n=1?[2an?(einω0?t+e?inω0?t)??2bn?i(einω0?t?e?inω0?t)?]
= C + ∑ n = 1 ∞ [ ( a n ? i b n 2 ) e i n ω 0 t + ( a n + i b n 2 ) e ? i n ω 0 t ] =C+\sum_{n=1}^{\infty}\left[\left(\frac{a_n-ib_n}{2}\right)e^{in\omega_0t}+(\frac{a_n+ib_n}{2})e^{-in\omega_0t}\right] =C+n=1?[(2an??ibn??)einω0?t+(2an?+ibn??)e?inω0?t]
= C + ∑ n = 1 ∞ [ ( a n ? i b n 2 ) e i n ω 0 t ] + ∑ n = ? 1 ? ∞ [ ( a ? n + i b ? n 2 ) e i n ω 0 t ] =C+\sum_{n=1}^{\infty}\left[\left(\frac{a_n-ib_n}{2}\right)e^{in\omega_0t}\right]+\sum_{n=-1}^{-\infty}\left[(\frac{a_{-n}+ib_{-n}}{2})e^{in\omega_0t}\right] =C+n=1?[(2an??ibn??)einω0?t]+n=?1??[(2a?n?+ib?n??)einω0?t]
令C= c 0 c_0 c0?,則有:
x ( t ) = ∑ n = ? ∞ + ∞ c n e i n ω 0 t x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}} x(t)=n=?+?cn?einω0?t
其中:
c n = { C n = 0 a n ? b n i 2 n > 0 a ∣ n ∣ + b ∣ n ∣ i 2 n < 0 c_n=\left\{\begin{matrix}C&n=0\\\frac{a_n-b_ni}{2}&n>0\\\frac{a_{\left|n\right|}+b_{\left|n\right|}i}{2}&n<0\\\end{matrix}\right. cn?=????C2an??bn?i?2an?+bn?i??n=0n>0n<0?
可見由復指數形式表示時,系數 c n c_n cn?為復數,與三角函式類似, e i n ω 0 t e^{in\omega_0t} einω0?t也具有正交性,在這里就不證明了,那么有:
c n = 1 T ∫ 0 T x ( t ) e ? i n ω 0 t d t c_n=\frac{1}{T}\int_{0}^{T}x\left(t\right)e^{-in\omega_0t}dt cn?=T1?0T?x(t)e?inω0?tdt

為什么非得用復指數表示呢?有什么優點?
我們知道,在使用三角函式表示時,正交基包括正弦和余弦函式,在同一角頻率 n ω 0 n\omega_0 nω0?下,對應的正交基有 s i n ( n ω 0 t ) sin(n\omega_0t) sin(nω0?t) c o s ( n ω 0 t ) cos(n\omega_0t) cos(nω0?t),首先思考一個問題,為什么要同時使用sin和cos作為正交基,單獨使用sin或cos不可以嗎?
當然不可以,因為有要考慮相位的因素,舉個最簡單的例子,對于具有初相位的函式 x ( t ) = s i n ( n ω 0 t + π / 3 ) x(t)=sin(n\omega_0t+π/3) x(t)=sin(nω0?t+π/3),如果只用 s i n n ω 0 t sinn\omega_0t sinnω0?t或者 c o s n ω 0 t cosn\omega_0t cosnω0?t表示,是無論如何無法做到的,而同時使用 s i n n ω 0 t sinn\omega_0t sinnω0?t c o s n ω 0 t cosn\omega_0t cosnω0?t即可輕松表示:
x ( t ) = 0.5 s i n ω 0 t + 3 2 c o s ω 0 t x(t)=0.5sin\omega_0t+\frac{\sqrt3}{2}cos\omega_0t x(t)=0.5sinω0?t+23 ??cosω0?t
那么如果使用三角函式表示傅里葉級數的話,應該包括正弦譜和余弦譜,而通常情況下,我們并不關心在分析的頻率中包含“正弦”和“余弦”的值分別為多少,更多的是關心分析頻率的總體幅值,還是對于上述信號x(t),如果只知道在角頻率為 ω 0 \omega_0 ω0?時其正弦分量為0.5,余弦分量為 3 2 \frac{\sqrt3}{2} 23 ??,那么也可以算出包含頻率為 ω 0 \omega_0 ω0?信號的總幅值為 0.5 2 + ( 3 2 ) 2 = 1 \sqrt{{0.5}^2+{(\frac{\sqrt3}{2})}^2}=1 0.52+(23 ??)2 ?=1,但這樣做過于繁瑣,繪出的頻譜圖不直觀,而使用復指數描述時, c n c_n cn?為復數,其模即能表示角頻率 n ω 0 n\omega_0 nω0?諧波的幅值,而 c n c_n cn?在復平面上與實軸的夾角 a r c t a n b n a n arctan\frac{b_n}{a_n} arctanan?bn??為相位角,這樣,用信號的幅值譜和相位譜代替正弦譜和余弦譜,在分析結果上更加直觀,

1.傅里葉變換(FT)、離散傅里葉級數(DFS)、離散傅里葉變換(DFT)、離散時間傅里葉變換(DTFT)

1.0 傅里葉變換
在傅里葉級數中,分析物件要求是周期性信號,那么對于非周期信號如何處理?其實非周期信號也可以看成是周期無限大的周期信號,在復指數表示的傅里葉級數公式中:
x ( t ) = ∑ n = ? ∞ + ∞ c n e i n ω 0 t x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}} x(t)=n=?+?cn?einω0?t
假設x(t)的周期為1,基頻 ω 0 = 2 π \omega_0=2π ω0?=2π,那么頻譜成分為 [ 0 , ± 2 π , ± 4 π , … , ± 2 n π ] [0,±2π,±4π,…,±2nπ] [0,±2π,±4π,,±2nπ]
如果將x(t)的周期變為2,則基頻 ω 0 = π \omega_0=π ω0?=π,那么頻譜成分相應變為 [ 0 , ± π , ± π , … , ± n π ] [0,±π,±π,…,±nπ] [0,±π,±π,,±nπ]
可以看出,如果僅改變分析信號的周期,則其頻率間隔變小、頻率成分看起來更加“密集”,當周期變為無窮大時,此時頻率間隔無窮小,頻譜為連續值,這就是信號的傅里葉變換,其基本思路可參考下圖:

在這里插入圖片描述
此圖出處:(侵刪)

公式如下:
x ( t ) = ∑ n = ? ∞ + ∞ c n e i n ω 0 t = ∑ n = ? ∞ + ∞ c n e i n 2 π T t x\left(t\right)=\sum_{n=-\infty}^{+\infty}{c_ne^{in\omega_0t}}=\sum_{n=-\infty}^{+\infty}{c_ne^{in\frac{2\pi}{T}t}} x(t)=n=?+?cn?einω0?t=n=?+?cn?einT2π?t
T → ∞ T→\infty T時,求和符號變為積分符號,表示為:
x ( t ) = ∫ ? ∞ + ∞ F ( ω ) e i ω t d ω x\left(t\right)=\int_{-\infty}^{+\infty}{F(\omega)e^{i\omega t}d\omega} x(t)=?+?F(ω)eiωtdω
類似地,信號的傅里葉變換為:
F ( ω ) = 1 2 π ∫ ? ∞ + ∞ f ( x ) e ? i ω t d t F\left(\omega\right)=\frac{1}{2\pi}\int_{-\infty}^{+\infty}{f(x)e^{-i\omega t}dt} F(ω)=2π1??+?f(x)e?iωtdt
這些根據公式一步步推導就可以了,邏輯性較強,較容易理解,唯一需要注意的是,由于頻譜連續,在有限功率信號下,其頻率幅值無限小,但頻率間的相對關系保持不變,故傅里葉變換結果只反映了信號的頻率間的相對大小,

1.1 離散傅里葉級數(DFS)、離散時間傅里葉變換(DTFT)、離散傅里葉變換(DFT)、快速傅里葉變換
上述信號中討論的都是連續信號,而在計算機中只能處理時域離散的信號,我們通過在時間軸上對連續信號進行采樣達到離散化信號的目的,所謂采樣,就是將脈沖周期函式與連續信號相乘,
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

DFS處理的是時間離散的周期信號,其運算式形式與傅里葉級數類似:
X [ k ] = 1 N ∑ n = 0 N ? 1 x [ n ] e ? i 2 π N k n X\left[k\right]=\frac{1}{N}\sum_{n=0}^{N-1}{x[n]e^{-i\frac{2π}{N}kn}} X[k]=N1?n=0N?1?x[n]e?iN2π?kn
其頻域計算結果是離散的、周期的,
DTFT處理的是時間離散的非周期信號,DTFT和DFS的關系與FS和FT間的關系相同,其公式為:
X [ ω ] = x ( t ) = ∑ n = ? ∞ + ∞ x [ n ] e i ω n X\left[\omega\right]=x\left(t\right)=\sum_{n=-\infty}^{+\infty}{x[n]e^{i\omega n}} X[ω]=x(t)=n=?+?x[n]eiωn
其頻域計算結果是連續的、周期的,
同樣,這兩個公式理解起來相對簡單,分別是FS和FT的離散表達形式,故在公式層面不做過多解釋,

對于上述提到的傅里葉分析方法做一個簡單的總結:

時域時域頻域頻域
FS連續周期離散非周期
FT連續非周期連續非周期
DFS離散周期離散周期
DTFT離散非周期連續周期

這里需要解釋一個問題,連續信號經過采樣之后,其離散信號的頻譜為什么會變為周期的,這個問題困擾了我好久,在教材中大多用的是公式邏輯的推導,一般先引出性質:在時域中的乘積運算等于在頻域中的卷積運算,然后給出周期脈沖信號和連續函式信號的頻譜,再做卷積,程序十分繁瑣不易理解,直到多年知乎上一個匿名大神的解釋讓我豁然開朗,
在這里插入圖片描述

離散信號頻譜的周期性(此圖出處:奧本海姆《信號與系統》)

舉個栗子,有這樣一個離散序列,采樣間隔為1,
在這里插入圖片描述

這樣的一個離散序列的頻譜如何求解,根據傅里葉變換的思想,其各頻率的系數等于信號與對應頻率基向量的內積,為方便圖形表示,用三角函式形式描述,
在這里插入圖片描述
在這里插入圖片描述

顯而易見,周期為4基向量與信號的內積不為零,記為X;同樣對于周期為4/5的基向量經采樣后與周期為4基向量具有相同的值,對應地與信號的內積同樣為X,以此類推,周期為4/(N+4)的基向量均具有相同的特征,信號的頻譜圖因此具有周期性,
這只是為了方便理解做的一個最為粗淺的解釋,更嚴密的論證詳見傳送門:

終于到了DFT了(一滴都沒有了),簡單理解,DFT只是在DFS基礎上,截取時域上的主值區間,即只取1個周期的信號描述整個時間序列,從另外一個角度分析,DFT是DTFT基礎上,在頻域上進行采樣的結果,也就是說,在形式上DFT在時域和頻域上均滿足離散有限長度的條件,這樣便于在計算機上進行存盤運算,事實上,只有DFT在計算機上能夠實作,而目前數字信號處理中最常用的FFT演算法是DFT的一個快速實作,其本質上仍然是DFT,關于二十世紀最牛逼的演算法FFT,B站上的一個視頻講的很透徹:
快速傅里葉變換(FFT)——有史以來最巧妙的演算法?

附上筆者寫的一款簡易的FFT工具,可以方便對信號進行截取操作,需要留郵箱
在這里插入圖片描述

下期預告:
FFT應用實體及常見問題

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255321.html

標籤:其他

上一篇:篩選法求素數&一般方法求素數&判斷一個數是否是素數

下一篇:linux常用命令

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more