介绍
正弦波
将numpy导入为np
定义正弦波(f,overSampRate,相位,nCyl): """ 使用以下参数生成正弦波信号 参数: f:正弦波频率(赫兹) overSampRate:过采样率(整数) 相位:以弧度表示的所需相移 nCyl:要生成的正弦波周期数 退货: (t,g):时基(t)和信号g(t)作为元组 例子: f=10; 过采样率=30; 相位=1/3*np.pi; nCyl=5; (t,g)=正弦波(f,overSampRate,相位,nCyl) """ fs=overSampRate*f#采样频率 t=np.arange(0,nCyl*1/f-1/fs,1/fs)#时基 g=np.sin(2*np.pi*f*t+相位)#如果需要余弦波,则替换为cos return(t,g)#返回时基和信号g(t)作为元组
""" 用给定的采样率模拟正弦信号 """ 将numpy导入为np 导入matplotlib.pyplot作为plt#库进行打印 从signalgen import sine_wave#导入函数 f=10#频率=10Hz 过采样率=30#过采样率 fs=f*overSampRate#采样频率 相位=1/3*np.pi#以弧度表示的相移 nCyl=5#期望的正弦波周期数 (t,x)=sine_wave(f,overSampRate,phase,nCyl)#函数调用 plt.plot(t,x)#使用matplotlib包中的pyplot库进行绘图 plt.title(‘正弦波f=’+str(f)+‘Hz’)#图标题 plt.xlabel(“时间”)#x轴标签 plt.ylabel(“振幅”)#y轴标签 plt.show()#显示图形
FFT的不同表示:
从scipy.fftpack导入fft,ifft X=fft(X,N)#计算X[k] x=ifft(x,N)#计算x[N]
1.绘制DFT的原始值:
将numpy导入为np 将matplotlib.pyplot作为plt导入 从scipy.fftpack导入fft NFFT=1024#NFFT-点DFT X=fft(X,NFFT)#使用fft计算DFT 图1,ax=plt.subplots(nrows=1,ncols=1)#创建图形句柄 nVals=np.arange(start=0,stop=NFFT)#FFT图的原始索引 ax.图(nVals,np.abs(X)) ax.set_title('双面FFT-无FFTShift') ax.set_xlabel('采样点(N点DFT)') ax.set_ylabel(“DFT值”) 图1.显示()
2.FFT绘图–根据标准化频率轴绘制原始值:
将numpy导入为np 将matplotlib.pyplot作为plt导入 从scipy.fftpack导入fft NFFT=1024#NFFT点DFT X=fft(X,NFFT)#使用fft计算DFT 图2,ax=plt.subplots(nrows=1,ncols=1)#创建图形句柄 nVals=np.arange(start=0,stop=NFFT)/NFFT#标准化DFT采样点 ax.图(nVals,np.abs(X)) ax.set_title('双面FFT-无FFTShift') ax.set_xlabel('归一化频率') ax.set_ylabel(“DFT值”) 图2.显示()
3.FFT图–根据标准化频率(正负频率)绘制原始值:
将numpy导入为np 将matplotlib.pyplot作为plt导入 从scipy.fftpack导入fft,fftshift NFFT=1024#NFFT-点DFT X=fftshift(fft(X,NFFT))#使用fft计算DFT 图3,ax=plt.subplots(nrows=1,ncols=1)#创建图形句柄 fVals=np.arange(start=-NFFT/2,stop=NFFT/2)/NFFT#DFT采样点 ax.图(fVals,np.abs(X)) ax.set_title(“双面FFT-带FFTShift”) ax.set_xlabel('归一化频率') ax.set_ylabel('DFT值'); ax.自动缩放(启用=True,轴='x',紧密=True) ax.set_xticks(np.arange(-0.5,0.5+0.1,0.1)) 图show()
4.FFT图–x轴上的绝对频率与y轴上的幅值:
将numpy导入为np 将matplotlib.pyplot作为plt导入 从scipy.fftpack导入fft,fftshift NFFT=1024 X=fftshift(fft(X,NFFT)) 图4,ax=plt.subplots(nrows=1,ncols=1)#创建图形句柄 fVals=np.arange(开始=-NFFT/2,停止=NFFT/2)*fs/NFFT ax.图(fVals,np.abs(X),'b') ax.set_title(“双面FFT-带FFTShift”) ax.set_xlabel('频率(Hz)') ax.set_ylabel('|DFT值|') 最大设置极限(-50,50) ax.set_xticks(np.arange(-50,50+10,10)) 图4.显示()
5.功率谱–x轴上的绝对频率与y轴上的功率:
作者的书籍
本章主题