Python科學計算(二)——正弦信號的時域波形與頻譜圖 Python科學計算(二)-- 正弦信號的時域波形與頻域波形生成、計算與顯示
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as pl import matplotlib import math import random row = 4 col = 4 N = 500 fs = 5 n = [2*math.pi*fs*t/N for t in range(N)] axis_x = np.linspace(0,1,num=N) myfont = matplotlib.font_manager.FontProperties(fname='c:\\windows\\fonts\\fzshjw_0.ttf') #頻率為5Hz的正弦信號 x = [math.sin(i) for i in n] pl.subplot(221) pl.plot(axis_x,x) pl.title(u'5Hz的正弦信號', fontproperties=myfont) pl.axis('tight') #頻率為5Hz、幅值為3的正弦+噪聲 x1 = [random.gauss(0,0.5) for i in range(N)] xx = [] #有沒有直接兩個列表對應項相加的方式?? for i in range(len(x)): xx.append(x[i]*3 + x1[i]) pl.subplot(222) pl.plot(axis_x,xx) pl.title(u'頻率為5Hz、幅值為3的正弦+噪聲', fontproperties=myfont) pl.axis('tight') #頻譜繪制 xf = np.fft.fft(x) xf_abs = np.fft.fftshift(abs(xf)) axis_xf = np.linspace(-N/2,N/2-1,num=N) pl.subplot(223) pl.title(u'頻率為5Hz的正弦頻譜圖', fontproperties=myfont) pl.plot(axis_xf,xf_abs) pl.axis('tight') #頻譜繪制 xf = np.fft.fft(xx) xf_abs = np.fft.fftshift(abs(xf)) pl.subplot(224) pl.title(u'頻率為5Hz的正弦頻譜圖', fontproperties=myfont) pl.plot(axis_xf,xf_abs) pl.axis('tight') 有疑問的留言討論吧
|
|