数字混频器python仿真
来源:互联网 发布:以色列强悍战斗力知乎 编辑:程序博客网 时间:2024/04/30 06:31
在数字滤波器的MATLAB与FPGA实现中,作者用MATLAB定点仿真了混频器(Mixer)的波形图。由于最近在熟练python的使用,花了点时间,把该程序用python跑了出来。两种语言略有区别,所以代码上也会有一些不同。
基本原理是两个sine函数相乘后,频率会搬移,形成DC分量以及更高的频率分量。在程序中,也仿真了没有滤除DC分量时的情况。可以看出,量化比特对于性能的影响很明显。下面分别是量化比特为2和量化比特位10的时候的仿真图。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码如下:
from __future__ import divisionfrom pylab import *#system parameterfi = 625000 #input signal frequencyfo = 625000 # local oscillatorFs = 5000000 #sampling frequencyL = 1024# data lengthN = 10# quantization bitt = linspace(0,1/Fs*L,L) theta = 2*pi*rand()# random phasesi = sin(2*pi*fi*t + theta)#input sine waveso = sin(2*pi*fo*t)# local oscillatorsm = si * so# ideal without quantization losssm_no_dc = sm - mean(sm)#reduce DC componentsi = (si * (2**(N-1))).round()#quantizationso = (so * (2**(N-1))).round()sm_loss = si * so # with losssm_loss_no_dc = sm_loss - mean(sm_loss)# - DC#normalizationsi = si / max(abs(si))so = so / max(abs(so))sm = sm / max(abs(sm))sm_loss = sm_loss / max(abs(sm_loss))sm_loss_no_dc = sm_loss_no_dc / max(abs(sm_loss_no_dc))#calculate FFT and normalization# with DC componentf_sm = fft(sm,L)f_sm = f_sm / max(abs(f_sm))f_sm = concatenate([f_sm[L/2:],f_sm[0:L/2]],0)f_sm_loss = fft(sm_loss,L)f_sm_loss = f_sm_loss / max(abs(f_sm_loss))f_sm_loss = concatenate([f_sm_loss[L/2:],f_sm_loss[0:L/2]],0)# calculate FFT, DC component filtered outf_sm_no_dc = fft(sm_no_dc,L)f_sm_no_dc = f_sm_no_dc / max(abs(f_sm_no_dc))f_sm_loss_no_dc = fft(sm_loss_no_dc,L)f_sm_loss_no_dc = f_sm_loss_no_dc / max(abs(f_sm_loss_no_dc))# pictureaxis = arange(-L/2,L/2,1)*Fs/L*(10**(-6))fig,ax = subplots(2,2)ax[0,0].set_title("%d bit quantization" %N)ax[0,0].plot(axis,f_sm)ax[0,0].set_xlabel(r'frequency without quantization')ax[0,1].plot(axis,f_sm_loss)ax[0,1].set_title("Frequency Amplitude")ax[0,1].set_xlabel(r'frequency with quantization')ax[1,0].plot(axis,f_sm_no_dc)ax[1,0].set_xlabel(r'No quant and DC')ax[1,1].plot(axis,f_sm_loss_no_dc)ax[1,1].set_xlabel(r'quantization but no DC')t = t * (10**6)fig1,ax1 = subplots(2,2)ax1[0,0].set_title("%d bit quantization" %N)ax1[0,0].plot(t[1:32],si[1:32])ax1[0,0].set_xlabel(r'input sine')ax1[0,1].plot(t[1:32],sm[1:32])ax1[0,1].set_title("Time Wave")ax1[0,1].set_xlabel(r'mix sine no loss')ax1[1,0].plot(t[1:32],sm_loss[1:32])ax1[1,0].set_xlabel(r'mix sine quantization loss')ax1[1,1].plot(t[1:32],sm_loss_no_dc[1:32])ax1[1,1].set_xlabel(r'quantization but no DC')show()
0 0
- 数字混频器python仿真
- 混频器非线性器件
- 数字光纤通信系统仿真软件的研究
- 控制系统数字仿真-基于MATLAB实现四阶龙格库塔法
- python仿真入门-Simulation(1)
- python 数字
- 【python】-数字
- Python 数字
- Python数字
- Python数字
- Python数字
- Python 数字
- Python -- 数字
- Python数字
- Python数字
- Python数字
- Python-数字
- Python数字
- JavaScript DOM对象和JQuery对象相互转换
- hhhh
- C++隐式类型转换
- 度量学习 (Metric Learning)(一)
- IOS前奏之Object-c @property和@synthesize的基本使用
- 数字混频器python仿真
- java 构造函数 和 构造代码块
- 插入排序算法之C++实现
- 关于从github 下载的开源项目导入eclipse
- JS正则表达式中的attributes为"m"
- hdu 5037(贪心)
- Windows 中包括的 USB 设备类驱动程序
- [G+smo][Test]gsReadWrite_test
- 德语学习之被动态