最近爱上Python(蟒蛇语言)这个编程语言,因为她简单,功能强大,而且还免费,网上能找到关于她的大量开源代码,因而便于学习。对于学工程,习惯用matlab作仿真的童鞋,假如想学一门语言玩编程的话,我极力推荐python! 仅仅花了一个下午就将她的语法学了一遍,因为她实在太像我比较熟的matlab了。matlab总是需要库的支持,python也是;m语言中数组为基础,python中序列、列表为基础;matlab专于做数组运算,python也有大量支持数组运算的库。 python在大量科学计算库的支持下,有了python(x,y),Spyder的编译环境后,python看起来就更像matlab了,如下图。 右下角为类似matlab环境中的command窗口,左边是路径文件,中间为文本编辑窗口。 是不是开始产生兴趣了呢?学习路径如下,大量文件支持!! 2、80个经典资料。入门的话,推荐下载其中的《笨办法学习python》、《常用模块详解》 http://bbs.51cto.com/thread-935214-1.html 3、python(x,y)(注意是python(x,y),它是用python专门科学计算的)http:///paper/books/scipydoc/index.html# 4、下载python(x,y)的地址 下载这个 自带PyQt、Python2.7编译器、Spyder等等 下一个顶十个 功能强大 其中包括GUI设计编程、Spyder(类似matlab环境)科学计算、原始类似Dos编程环境(强烈推荐) http://www. 另外,有童鞋想做游戏,python也可以哦,pygame(python的一个库)帮你! 5、先当网上下一个pygame(网上很多的,这里就不给除了,木有收藏),下的时候注意自己的python编译器的版本要与自己将要下载的pygame版本对应 pygame入门神器 http:///news/361 下面就来秀秀我用python编出的简易qpsk-ofdm系统仿真吧。http:///paper/books/scipydoc/index.html# 资料学习。 import os import numpy as np import matplotlib.pyplot as plt import random #import stdin close('all') x=array([1,2,3,4,5,6,7,8] )
os.system('cls')
x=x.reshape((len(x)/2,2)) x=arange(1,10001,1) size=len(x) print len(x) for i in range(len(x)): x[i-1]=random.randint(0,1) or_bits=x x=x.reshape((len(x)/2,2)) b=range(5000) d=range(5000) for i in range(5000): m=x[i][0] n=x[i][1] if m==0: m=-1 else: m=1
if n==0: n=-1 else: n=1
b[i]=complex(m,n) d[4999-i]=conjugate(b[i]) ''' x=np.linspace(0,2*np.pi,10) y=np.sin(x) ''' bb=range(10002) for i in bb: if i==0 or i==5001: bb[i]=0 elif i<=5000: bb[i]=b[i-1] else: bb[i]=d[i-5002]
cc=ifft(bb)*16 #print cc #print len(cc) plt.figure(figsize=(8,4)) plt.plot(real(cc)) plt.ylim(-1,1) cc_real=real(cc) print find(cc_real>0) flag1=find(cc_real>0) flag2=find(cc_real<=0) #for i in flag:
print cc_real[flag1] print cc_real[flag2] cc_pos=cc_real[flag1] cc_neg=cc_real[flag2] cc_2=cc_real**2 print mean(cc_pos**2) print mean(cc_neg**2) print mean(cc_2) pow_mean=mean(cc_2) noise_mean=pow_mean/float(10) print noise_mean noise=1 def awgn(x,snr): snr=10**(snr/10.0) xpower=np.sum(x**2)/len(x) npower=xpower/snr global noise noise=np.random.randn(len(x)) * np.sqrt(npower) length=range(len(x)) for i in length: x[i]=x[i]+noise[i] return x ########################## ofdm modulation############################ tx=awgn(cc_real,11) plt.figure(figsize=(8,4)) plt.plot(tx) plt.ylim(-1,1) ########################## ofdm demodulation########################## rx=tx rx_de1=fft(rx)/float(16) print rx_de1 rx_de2=rx_de1[1:5001] #print len(rx_de2) #print rx_de1[0] #print rx_de1[5001] print "a=",rx_de2[:] rx_de3=arange(1,10001,1) rx_de3=rx_de3.reshape((len(rx_de3)/2,2)) for i in range(len(rx_de3)): rr=real(rx_de2[i]) ri=imag(rx_de2[i]) if rr<0: rr=0 else: rr=1
if ri<0: ri=0 else: ri=1
rx_de3[i][0]=rr rx_de3[i][1]=ri rx_de4=rx_de3.reshape(1,(len(rx_de3)*2)) gg=find(rx_de4!=or_bits) ber_count=len(gg) ber=ber_count/float(len(or_bits)) print ber 仿真结果如下: |
|
来自: 小小锐DarkRose > 《python》