精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

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

傅里葉變換快速回顧

我們將使用傅里葉變換的如下定義:對于輸入序列x[n],當n=0到n時,傅里葉變換的第k個系數為以下復數:

常量去趨勢

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

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

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

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

使用下面代碼繪制所有指數也可以看到為什么它們的和總是為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')

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

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

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

這就常數去趨勢,是在進行傅里葉變換之前去除信號的均值。對于傅里葉系數,就傅里葉系數而言,它對應于將k = 0系數設置為0。

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

線性去趨勢

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

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

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

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

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

python代碼

在Python中使用numpy和scipy實現非常簡單。

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

在下面的例子中,創建了一個長度為20個樣本的信號,其中包含一個前導系數為2的線性部分,一個噪聲,一個偏移量為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')

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

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

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

線性信號的傅里葉變換

對于不同的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值,用紅色箭頭表示的傅里葉系數總是對齊的,并且等于一個比例。所以輸出頻譜中被去掉的部分總是序列[0,1,…N]的傅里葉變換的部分,其比例因子由線性擬合的斜率給出。

總結

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

去除信號的平均值使第0個系數為0。結果圖更容易檢查,因為大多數情況下,平均值與頻譜的其余部分相比可能相當大。如果我們去掉這個系數,y軸的尺度就更容易設定。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 信號處理器
    +關注

    關注

    1

    文章

    251

    瀏覽量

    25252
  • 最小二乘法
    +關注

    關注

    0

    文章

    22

    瀏覽量

    8434
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84451
  • 頻譜儀
    +關注

    關注

    7

    文章

    339

    瀏覽量

    35990
  • 傅里葉變換
    +關注

    關注

    6

    文章

    437

    瀏覽量

    42562
收藏 人收藏

    評論

    相關推薦

    學習傅里葉變換意義和方法

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

    傅里葉變換和拉普拉斯變換有什么區別

    傅里葉變換在物理學、數論、組合數學信號處理、概率論、統計學、密碼學、聲學、光學、海洋學、結構動力學等領域都有著廣泛的應用(例如在信號處理中,傅里葉
    發表于 06-28 06:52

    傅里葉變換就是這么簡單

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

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

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

    傅里葉變換數學意義

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

    對圖像進行傅里葉變換的意義

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

    傅里葉變換的時移特性

    傅里葉變換的時移特性 傅里葉變換是一種非常重要的數學工具,可以將任何周期性信號或非周期性信號進行頻域分析,從而在通信、電子工程等領域中得到廣
    的頭像 發表于 09-07 16:23 ?4535次閱讀

    傅里葉變換公式總結

    傅里葉變換公式總結? 傅里葉變換是一種將時域信號轉換為頻域信號數學方法。它是通過將一個連續或離散的時域
    的頭像 發表于 09-07 16:47 ?7317次閱讀

    傅里葉變換的實現方法

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

    傅里葉變換公式理解

    傅里葉變換公式理解 傅里葉變換是一種在數學、物理、工程和其他科學領域中常用的工具,它是一種將一個函數時域轉換到頻域的方法。傅里葉變換可以將
    的頭像 發表于 09-07 16:53 ?4087次閱讀

    傅里葉變換和離散傅里葉變換的關系

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

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

    傅里葉變換和逆變換是一對數學變換,用于分析信號和數據的頻域特征。傅里葉變換將一個
    的頭像 發表于 01-11 17:19 ?3641次閱讀

    傅里葉變換和拉普拉斯變換的關系是什么

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

    傅里葉變換數學原理

    傅里葉變換數學原理主要基于一種將函數分解為正弦和余弦函數(或復指數函數)的線性組合的思想。以下是對傅里葉變換數學原理的介紹: 一、基本原理 傅里葉級數 :對于周期性連續
    的頭像 發表于 11-14 09:27 ?210次閱讀

    傅里葉變換信號處理中的應用

    在現代通信和信號處理領域,傅里葉變換(FT)扮演著核心角色。它不僅幫助我們分析信號的頻率成分,還能用于濾波、壓縮和信號恢復等多種任務。 傅里葉變換
    的頭像 發表于 11-14 09:29 ?303次閱讀