0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從數(shù)學(xué)和視覺上展示信號去趨勢是如何影響傅里葉變換的

冬至子 ? 來源:Deephub ? 作者:Deephub ? 2023-08-16 15:26 ? 次閱讀

在計(jì)算傅里葉變換之前對信號去趨勢是一種常見的做法,特別是在處理時(shí)間序列時(shí)。在這篇文章中,我將從數(shù)學(xué)和視覺上展示信號去趨勢是如何影響傅里葉變換的。

這篇文章的目的是讓介紹理解什么是常數(shù)和線性去趨勢,為什么我們使用它們,以及它們是如何影響信號的傅里葉變換的。

傅里葉變換快速回顧

我們將使用傅里葉變換的如下定義:對于輸入序列x[n],當(dāng)n=0到n時(shí),傅里葉變換的第k個(gè)系數(shù)為以下復(fù)數(shù):

常量去趨勢

序列x[n]可以分解如下:將其寫成兩個(gè)信號的和:“常數(shù)部分”等于信號的平均值,“平均值周圍的可變性”部分給出實(shí)際信號與其平均值之間的差值:

對于所有樣本n,我們有:

首先,求x均值的傅里葉變換

這是一個(gè)簡單的序列,所以在k=0處x的均值為0,在其他地方的值也為0。

使用下面代碼繪制所有指數(shù)也可以看到為什么它們的和總是為0(除了k=0)。

import numpy as np
 import matplotlib.pyplot as plt
 
 N = 10
 ns = np.arange(N)
 
 fig, axes = plt.subplots(1, N//2+1, figsize=(18,8), sharex=True, sharey=True)
 
 for k in range(0, N//2+1):
     eiks = np.exp(-2*1J*np.pi*ns/N*k)
     pretty_ax(axes[k])
     plot_sum_vector(eiks, axes[k])
     axes[k].set_title(f'k={k}')
     axes[k].set_aspect('equal')
 fig.suptitle(f'Complex plot of the $e^{{-2ipi kn/N}}$ families')

現(xiàn)在我們把x的傅里葉變換寫成這樣,分為兩部分

分解x的傅里葉變換,結(jié)果是2個(gè)傅里葉變換的和:“可變性”部分的傅里葉變換,以及k=0時(shí)等于平均值的系數(shù)。

也就是說x的傅里葉變換等于其可變性在均值附近的傅里葉變換的和,再加上除k = 0處之外的序列,這個(gè)序列都為0,所以他的均值是x。

這就常數(shù)去趨勢,是在進(jìn)行傅里葉變換之前去除信號的均值。對于傅里葉系數(shù),就傅里葉系數(shù)而言,它對應(yīng)于將k = 0系數(shù)設(shè)置為0。

k = 0的系數(shù)始終等于信號的平均值,可以使用下面方法證明:

線性去趨勢

方法與前面相同:將輸入信號寫為2個(gè)部分的和:“線性”部分,以及圍繞該線性部分的其余變化:

這里的線性部分是從最小二乘擬合計(jì)算。利用指數(shù),可以將線性部分寫為:

其中b是信號的平均值。讓我們來看看它的傅里葉變換:

線性部分的傅里葉變換為,給定傅里葉變換的線性性質(zhì):

線性去趨勢包括在進(jìn)行傅里葉變換之前去除x的線性部分:它從結(jié)果中去除aFT(n)+b項(xiàng),其中a是常數(shù)因子(對應(yīng)于線性擬合的斜率),F(xiàn)T(n)是線性序列[0,1,…]的傅里葉變換,b是信號的平均值(因此第一個(gè)傅里葉系數(shù)將為0,就像常數(shù)去趨勢一樣)。

python代碼

在Python中使用numpy和scipy實(shí)現(xiàn)非常簡單。

Scipy在它的signal 包中提供了detrend函數(shù),帶有一個(gè)類型參數(shù)來指定我們是想讓信號保持常量趨勢還是線性趨勢。

在下面的例子中,創(chuàng)建了一個(gè)長度為20個(gè)樣本的信號,其中包含一個(gè)前導(dǎo)系數(shù)為2的線性部分,一個(gè)噪聲,一個(gè)偏移量為4的正弦部分。

import numpy as np
 from scipy.signal import detrend
 import matplotlib.pyplot as plt
 
 N = 20
 # create a sample signal, with linear, offset, noise and sinus parts
 ys = np.arange(N) * 2 + 4 + np.random.randn(N) + 4*np.sin(2*np.pi*np.arange(N)/5)
 # constant and linear detrend
 ys_c = detrend(ys, type='constant')
 ys_l = detrend(ys, type='linear')
 
 fig, axes = plt.subplots(1, 2)
 
 ax = axes[0]
 ax.plot(ys, label='raw')
 ax.plot(ys_c, label='constant-detrended')
 ax.plot(ys_l, label='linear-detrended')
 ax.legend()
 ax.set_title('Input signal')
 
 ax = axes[1]
 # we use rfft since our input signals are real
 ax.plot(np.abs(np.fft.rfft(ys)))
 ax.plot(np.abs(np.fft.rfft(ys_c)))
 ax.plot(np.abs(np.fft.rfft(ys_l)))
 ax.set_title('Module of Fourier-transform')

在左邊我們有原始輸入信號,以及它的常數(shù)去趨勢和線性去趨勢版本。

常數(shù)去趨勢有效地去除信號的平均值,使其在0附近居中。線性去趨勢不僅去掉了信號的平均值,而且還去掉了它的線性趨勢(又名“直線斜率”)。從視覺上看,在線性去趨勢信號上比在原始信號上更容易發(fā)現(xiàn)正弦部分。

右邊是每個(gè)信號的傅里葉變換模塊:如果不去除趨勢,我們得到藍(lán)色模塊。使用常數(shù)去趨勢法去除平均值可以有效地將0系數(shù)設(shè)置為0,這在大多數(shù)情況下使得圖表更容易分析。自線性去趨勢的結(jié)果是最好的:輸出傅里葉系數(shù)很好地顯示了輸出頻譜中的頻率,線性去趨勢的主要優(yōu)點(diǎn)是它大大減少了頻譜泄漏。

線性信號的傅里葉變換

對于不同的K值,我們可以很容易地畫出線性信號Kn (K為斜率)的傅里葉變換:

import numpy as np
 import matplotlib.pyplot as plt
 
 N = 10
 ns = np.arange(N)
 Ks = [-5, 2, 5]
 
 fig, axes = plt.subplots(len(Ks), N//2+1, figsize=(18,8), sharex=True, sharey=True, gridspec_kw={'hspace':0, 'wspace':0})
 
 for i, K in enumerate(Ks):
     xs = K*np.arange(N)
     for k in range(0, N//2+1):
         Zs = xs * np.exp(-2*1J*np.pi*ns/N*k) / N
         ax = axes[i, k]
         pretty_ax(ax)
         plot_sum_vector(Zs, ax)
         ax.set_aspect('equal')
         ax.set_xlabel(f'k={k}')
     axes[i, 0].set_ylabel(f'K={K}')
 fig.tight_layout()

對于給定的k值,用紅色箭頭表示的傅里葉系數(shù)總是對齊的,并且等于一個(gè)比例。所以輸出頻譜中被去掉的部分總是序列[0,1,…N]的傅里葉變換的部分,其比例因子由線性擬合的斜率給出。

總結(jié)

在這篇文章中,我們介紹了常量和線性去趨勢:它們分別由去除輸入信號的平均值或線性擬合組成。在計(jì)算傅里葉變換之前的預(yù)處理步驟有助于使輸出譜更容易解釋。

去除信號的平均值使第0個(gè)系數(shù)為0。結(jié)果圖更容易檢查,因?yàn)榇蠖鄶?shù)情況下,平均值與頻譜的其余部分相比可能相當(dāng)大。如果我們?nèi)サ暨@個(gè)系數(shù),y軸的尺度就更容易設(shè)定。

線性去趨勢除了去掉平均值也去掉了信號中的總體趨勢,這通常是原始信號的主導(dǎo)部分,這樣可以去掉其他成分例如季節(jié)行為等,所以如果需要對季節(jié)性進(jìn)行分析還需要另外的處理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 信號處理器
    +關(guān)注

    關(guān)注

    1

    文章

    250

    瀏覽量

    25172
  • 最小二乘法
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8412
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84081
  • 頻譜儀
    +關(guān)注

    關(guān)注

    7

    文章

    338

    瀏覽量

    35772
  • 傅里葉變換
    +關(guān)注

    關(guān)注

    6

    文章

    426

    瀏覽量

    42483
收藏 人收藏

    評論

    相關(guān)推薦

    學(xué)習(xí)傅里葉變換意義和方法

    學(xué)習(xí)傅里葉變換需要面對大量的數(shù)學(xué)公式,數(shù)學(xué)功底較差的同學(xué)聽到傅里葉變換就頭疼。事實(shí),許多數(shù)學(xué)
    發(fā)表于 06-28 07:31

    傅里葉變換和拉普拉斯變換有什么區(qū)別

    傅里葉變換在物理學(xué)、數(shù)論、組合數(shù)學(xué)、信號處理、概率論、統(tǒng)計(jì)學(xué)、密碼學(xué)、聲學(xué)、光學(xué)、海洋學(xué)、結(jié)構(gòu)動力學(xué)等領(lǐng)域都有著廣泛的應(yīng)用(例如在信號處理中,傅里葉
    發(fā)表于 06-28 06:52

    傅里葉變換與小波變換信號噪中的應(yīng)用

    對于高頻信號和高頻噪聲干擾相混疊的信號,采用小波變換去除噪聲可以避免用傅里葉變換去噪帶來的信號折損。對于噪聲頻率固定的平穩(wěn)
    發(fā)表于 03-18 16:47 ?427次下載

    傅里葉變換就是這么簡單

    學(xué)習(xí)傅里葉變換需要面對大量的數(shù)學(xué)公式,數(shù)學(xué)功底較差的同學(xué)聽到傅里葉變換就頭疼。事實(shí),許多數(shù)學(xué)
    的頭像 發(fā)表于 10-10 18:03 ?2.3w次閱讀
    <b class='flag-5'>傅里葉變換</b>就是這么簡單

    傅里葉變換信號處理的意義

    傅里葉變換信號處理的意義? 傅里葉變換是一種基本的數(shù)學(xué)工具,它經(jīng)常用于信號處理中。在這篇文章中,我們將探討
    的頭像 發(fā)表于 09-07 16:14 ?2003次閱讀

    傅里葉變換數(shù)學(xué)意義

    一個(gè)函數(shù)拆分成若干個(gè)正弦函數(shù)的方法,并將每個(gè)正弦函數(shù)的振幅、相位和頻率表示出來,從而對原函數(shù)進(jìn)行分析的方法。 傅里葉變換是物理學(xué)、工程學(xué)和數(shù)學(xué)領(lǐng)域中廣泛使用的一個(gè)工具,它被應(yīng)用于信號處理、圖像處理、量子力學(xué)、電子學(xué)
    的頭像 發(fā)表于 09-07 16:18 ?736次閱讀

    對圖像進(jìn)行傅里葉變換的意義

    對圖像進(jìn)行傅里葉變換的意義 傅里葉變換是一種將一個(gè)信號分解成其頻率分量的方法,它在信號處理、圖像處理、電信領(lǐng)域、計(jì)算機(jī)視覺領(lǐng)域等方面都有著廣
    的頭像 發(fā)表于 09-07 16:18 ?2464次閱讀

    傅里葉變換的時(shí)移特性

    傅里葉變換的時(shí)移特性 傅里葉變換是一種非常重要的數(shù)學(xué)工具,可以將任何周期性信號或非周期性信號進(jìn)行頻域分析,從而在通信、電子工程等領(lǐng)域中得到廣
    的頭像 發(fā)表于 09-07 16:23 ?3997次閱讀

    傅里葉變換公式總結(jié)

    傅里葉變換公式總結(jié)? 傅里葉變換是一種將時(shí)域信號轉(zhuǎn)換為頻域信號數(shù)學(xué)方法。它是通過將一個(gè)連續(xù)或離散的時(shí)域
    的頭像 發(fā)表于 09-07 16:47 ?6816次閱讀

    傅里葉變換的實(shí)現(xiàn)方法

    傅里葉變換的實(shí)現(xiàn)方法? 傅里葉變換是一種將信號在時(shí)間域和頻率域之間相互轉(zhuǎn)換的數(shù)學(xué)工具。它的實(shí)現(xiàn)方法有很多種,其中最常見的是離散傅里葉變換(D
    的頭像 發(fā)表于 09-07 16:47 ?1082次閱讀

    傅里葉變換公式理解

    傅里葉變換公式理解 傅里葉變換是一種在數(shù)學(xué)、物理、工程和其他科學(xué)領(lǐng)域中常用的工具,它是一種將一個(gè)函數(shù)時(shí)域轉(zhuǎn)換到頻域的方法。傅里葉變換可以將
    的頭像 發(fā)表于 09-07 16:53 ?3836次閱讀

    傅里葉變換和離散傅里葉變換的關(guān)系

    傅里葉變換和離散傅里葉變換的關(guān)系 傅里葉變換(Fourier Transform)是一種將時(shí)間域(或空間域)的信號轉(zhuǎn)換為頻率域(或波數(shù)域)的信號
    的頭像 發(fā)表于 09-07 17:04 ?2207次閱讀

    什么是傅里葉變換和逆變換?為什么要用傅里葉變換?

    傅里葉變換和逆變換是一對數(shù)學(xué)變換,用于分析信號和數(shù)據(jù)的頻域特征。傅里葉變換將一個(gè)
    的頭像 發(fā)表于 01-11 17:19 ?2860次閱讀

    傅里葉變換的應(yīng)用 傅里葉變換的性質(zhì)公式

    傅里葉變換(Fourier Transform)是一種數(shù)學(xué)方法,可以將一個(gè)函數(shù)在時(shí)間或空間域中的表示轉(zhuǎn)化為頻率域中的表示。它是由法國數(shù)學(xué)家約瑟夫·傅里葉(Jean-Baptiste Joseph
    的頭像 發(fā)表于 02-02 10:36 ?784次閱讀

    傅里葉變換和拉普拉斯變換的關(guān)系是什么

    變換的定義和基本概念。 其中,**f(t)**代表原始信號,**F(jomega) 表示信號 f(t)**在頻域的表示, j 為虛數(shù)單位。傅里葉變
    的頭像 發(fā)表于 02-18 15:45 ?1350次閱讀