import numpy as np
from scipy.fftpack import fft
from scipy import signal
import matplotlib.pyplot as plt
from matplotlib.pylab import mpl
mpl.rcparams[
'font.sans-serif']=
['simhei'
]#顯示中文
mpl.rcparams[
'axes.unicode_minus']=
false
#顯示負號
n =1024
#取樣點的個數
x = np.arange(0,
2*np.pi,
2*np.pi/n)
#產生頻率為20、500、5hz的訊號進行模擬
y =7
* np.sin(
20*x)+5
* np.sin(
500* x)+9
* np.sin(
5* x)
plt.figure(1)
plt.title(
"原始訊號時域波形"
)plt.plot(x, y)
fft_y = fft(y)
# 快速傅利葉變換
a = np.
abs(fft_y)
#對變換後的結果取模
a = a*
2/n #求幅值
w = np.arange(
0,n,1)
#頻域軸
plt.figure(2)
plt.title(
"原始訊號頻譜"
)plt.plot(w,a)
b, a = signal.butter(10,
[2*10
/n,2
*250
/n],
'bandpass'
)data = signal.filtfilt(b, a, y)
#y為要過濾的訊號
plt.figure(3)
plt.title(
"帶通iir濾波後的時域波形"
)plt.plot(x,data)
fft_y = fft(data)
# 快速傅利葉變換
a = np.
abs(fft_y)
#對變換後的結果取模
a = a*
2/n #求幅值
w = np.arange(
0,n,1)
#頻域軸
plt.figure(4)
plt.title(
"帶通濾波後頻譜圖"
)plt.plot(w,a)
plt.show(
)
IIR與FIR數字濾器的比較
fir和iir濾波器的乙個主要區別 fir是線性相位,iir為非線性相位 雙線性變換法 對於非線性相位會造成的影響,可以這樣考慮 對於輸入的不同頻率分量,造成的相位差與頻率不成正比,則輸出時不同頻率分量的疊加的相位情況和輸入時有變化,得到的通帶訊號產生失真。iir濾波器有以下幾個特點 1 iir數字...
基於KNN的手寫數字識別
from numpy import import operator import os def classify0 inx,dataset,labels,k 構造分類器 knn原理 datasetsize dataset.shape 0 diffmat tile inx,datasetsize,1 ...
基於MNIST的手寫數字識別
1 mnist 資料資料集獲取 方式一 使用 tf.contrib,learn 模組載入 mnist 資料集 棄用 如下 使用 tf.contrib.learn 模組載入 mnist 資料集 deprecated 棄用 import tensorflow as tf from tensorflow....