亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用python實(shí)現(xiàn)離散時(shí)間傅里葉變換的方法

系統(tǒng) 2333 0

我們經(jīng)常使用傅里葉變換來(lái)計(jì)算數(shù)字信號(hào)的頻譜,進(jìn)而分析數(shù)字信號(hào),離散時(shí)間傅里葉變換的公式為:

可是自己動(dòng)手實(shí)現(xiàn)一遍才是最好的學(xué)習(xí)。

在數(shù)字分析里面,傅里葉變換默認(rèn)等時(shí)間間隔采樣,不需要時(shí)間序列,只需要信號(hào)數(shù)組即可分析。

分析過(guò)程如下:

  • 對(duì)于含有 n 個(gè)樣本值的數(shù)字信號(hào)序列,根據(jù)奈奎斯特采樣定律,包含的周期數(shù)最大為 n/2,周期數(shù)為 0 代表直流分量。所以,當(dāng)周期數(shù)表示為離散的 0,1,2,3…n/2 ,總的數(shù)目為 n/2+1 個(gè)
  • 傅里葉變換之后的結(jié)果為復(fù)數(shù), 下標(biāo)為 k 的復(fù)數(shù) a+b*j 表示時(shí)域信號(hào)中周期為 N/k 個(gè)取樣值的正弦波和余弦波的成分的多少, 其中 a 表示 cos 波形的成分, b 表示 sin 波形的成分
  • 首先產(chǎn)生一個(gè)長(zhǎng)度為 n,一倍周期的 $e^{-jwn} $ (即為 $cos(wn)-jsin(wn) $ )波樣本序列.
  • 將數(shù)字信號(hào)序列中的每一個(gè)樣本與 1 倍周期的樣本波形序列相乘,得到 n 個(gè)乘積,將 n 個(gè)乘積相加,放入 f[1] 中。
  • 再產(chǎn)生一個(gè)長(zhǎng)度為 n,兩倍周期的 $e^{-jwn} $ (即為 $cos(wn)-jsin(wn) $ )波樣本序列,再將數(shù)字信號(hào)序列中的每一個(gè)樣本與 2 倍周期的樣本波形序列相乘,得到 n 個(gè)乘積,將 n 個(gè)乘積相加,放入 f[2] 中。依次重復(fù)。
  • 對(duì)于 0 倍周期,即直流分量來(lái)說(shuō),可以認(rèn)為產(chǎn)生的是 0 倍周期的樣本波形,重復(fù)操作,放入 f[0] 即可。
  • 這樣就得到了數(shù)字信號(hào)序列的傅里葉變換

使用方法:

從以上過(guò)程得到數(shù)字序列的傅里葉變換之后,如果想要得到真正頻譜,還需要做處理:

  • 計(jì)算出的每一個(gè)頻率下的幅值需要除以時(shí)間序列的長(zhǎng)度,類似求平均的過(guò)程
  • 每一個(gè)頻率下的幅值是一個(gè)復(fù)數(shù),需要對(duì)它求模,而且因?yàn)樵谪?fù)頻率處也有值,所以需要對(duì)于實(shí)信號(hào)需要乘 2
  • 頻率的序列為 0 到采樣率的一半,長(zhǎng)度為 n/2+1

完整程序:

            
# 離散時(shí)間傅里葉變換的 python 實(shí)現(xiàn)
import numpy as np
import math
import pylab as pl
import scipy.signal as signal
import matplotlib.pyplot as plt

sampling_rate=1000
t1=np.arange(0, 10.0, 1.0/sampling_rate)
x1 =np.sin(15*np.pi*t1)

# 傅里葉變換
def fft1(xx):
#   t=np.arange(0, s)
  t=np.linspace(0, 1.0, len(xx))
  f = np.arange(len(xx)/2+1, dtype=complex)
  for index in range(len(f)):
    f[index]=complex(np.sum(np.cos(2*np.pi*index*t)*xx), -np.sum(np.sin(2*np.pi*index*t)*xx))
  return f

# len(x1)
          
            
xf=fft1(x1)/len(x1)
freqs = np.linspace(0, sampling_rate/2, len(x1)/2+1)
plt.figure(figsize=(16,4))
plt.plot(freqs,2*np.abs(xf),'r--')

plt.xlabel("Frequency(Hz)")
plt.ylabel("Amplitude($m$)")
plt.title("Amplitude-Frequency curve")

plt.show()
          

使用python實(shí)現(xiàn)離散時(shí)間傅里葉變換的方法_第1張圖片

            
plt.figure(figsize=(16,4))
plt.plot(freqs,2*np.abs(xf),'r--')

plt.xlabel("Frequency(Hz)")
plt.ylabel("Amplitude($m$)")
plt.title("Amplitude-Frequency curve")
plt.xlim(0,20)
plt.show()
          

使用python實(shí)現(xiàn)離散時(shí)間傅里葉變換的方法_第2張圖片

此處實(shí)現(xiàn)的是傳統(tǒng)的傅里葉變換,這種方法實(shí)際已經(jīng)不用了,現(xiàn)在使用快速傅里葉變換,其實(shí)兩種是等價(jià)的,但是快速傅里葉變換時(shí)間復(fù)雜度要小很多。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 中文婷婷 | 神马视频我不卡 | 爱操成人网 | 色黄网站成年女人色毛片 | 99热久久国产精品这里有6 | 亚洲精品123区 | 97在线观看免费版 | 国产免费久久 | 国产一级特黄特色aa毛片 | 欧洲国产伦久久久久久久 | 中文字幕亚洲图片 | 成人久久精品 | 免费视频网站在线观看黄 | 成人毛片18女人毛片免费96 | 亚洲免费视频网 | 久久99久久精品国产只有 | 老司机午夜精品视频你懂的 | 久久99精品国产 | 日本高清h色视频在线观看 日本高清不卡二区 | 久草在线影视 | 国产亚洲精品一区二区三区 | 九天玄帝诀在线观看 | 国产欧美精品一区二区三区-老狼 | 中文字幕亚洲综合久久2 | 久久精品国产一区二区三区不卡 | 夜夜操天天插 | 久久久久免费精品视频 | 激情久久久久久久久久久 | 真实国产乱弄免费视频 | 久久国产热视频 | 久久这里只有精品1 | 国产三级黄色录像 | 乱人伦精品一区二区 | 国产一区二区精品久久凹凸 | 久久精品中文字幕久久 | 亚洲欧美久久 | 国产亚洲自拍一区 | 久久99精品国产99久久6男男 | 亚洲线精品久久一区二区三区 | 狠狠狠狠狠狠狠 | 国产精品精品 |