2874|0

95

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

用optparse处理命令行参数 [复制链接]

在编写程序的时候,经常需要设置一些选项,以便在用命令行运行程序时,可以自由的设置某些参数。今天学习了一下optparse,这个python下专门用来解释命令行的模块。

注:程序的主过程是一个高斯白噪声信号源,通过一个低通滤波器后,将结果显示在频谱分析仪上。低通滤波器的通带增益为1,通带频率为bw,过渡带宽为bw/10.0,衰减为80db。在这里,bw是我想在运行里用命令行来设置的,就用到了optparse。

optparse的使用分为三个步骤:

1、从optparse导入类OptionParser,并为它实例化一个对象;

2、调用OptionParser类的方法add_option()添加自定义的选项;

3、调用OptionParser类的parse_args()进行剖析,返回一个dict和一个list。

在我的程序中分别对应的是:

parser=OptionParser()

parser.add_option('-b','--bandwidth',dest='bw',action='store',type='int',default=5000,help='set the bandwidth')

(options,args)=parser.parse_args()

说明:

OptionParser.add_option有五个参数--action指存储方式,默认为stroe;type为设置值的类型; dest为存储的变量;default为默认值;help为帮助信息。

(options,args)中options是一个dict,args是一个list,分别存储我所设置的键值和其他参数。

以我程序的理解来说就是:当在命令行中用-b或者-bw后边跟一个整数num设置程序的带宽时,程序会将这个整数num赋给字典options中的键bw,即字典中的形式为{'bw':num,‘…’:…}。其他的参数则分别存储到序列args中了。

解析完命令行参数后,获得了要设置的带宽值bw(如果没有-b或者--bandwidth选项,那么bw就是默认值5000)。将这个参数再传递给滤波器的设计参数中

taps=firdes.low_pass_2(1,samp_rate,self.bw,self.bw/10.0,80),各设置的数值对应于low_pass_2(double gain, double sampling_freq, double cutoff_freq,double transition_width, double attenuation_dB,win_type window = WIN_HAMMING, double beta = 6.76) [后面两项为默认值,一般不用修改]。经过这样的设置后,再将源(需要加一个throttle)、低通滤波器和频谱仪连接起来,就可以显示出结果了。

在没有设置带宽的情况下,默认值为5000:

当用-b设置带宽为3000时的结果:

当然还可以用optparser.add_option添加更多的自定义选项来使程序运行更加灵活,optparse这个命令行解释器还是很方便的。通过这个程序不仅学习了optparse的使用,也接触了一些滤波器模块的设计与使用方法。












此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表