


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用最大似然估计的方法来估计频率本作品采用知识共享署名-非商业性使用-相同方式共享3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。作者:xialulee最初发布于:2010年5月31日,最近对频率估计感兴趣。之前阅读了Matlab的rootmusic.m(参见读Matlab7.7 Signal Processing Toolbox的rootmusic函数(一)-rootmusic是怎么估计信号频率的),后来又试了LS-ESPRIT算法(参见Python的LS-ESPRIT)。今天看资料,说最大似然估计的方法也可用于频率的估计。想想这也是理所当然的事情,最大似然法本来就可以用来估计参数,而频率也是信号的重要参数。但是资料中说如果直接用最大似然法估计频率会有很多困难。看看其表达式,想想也是。所以可能实际中还是MUSIC,ESPRIT比较好用吧。曾经还在IEEE上看过一篇讲解用MUSIC估计DTMF频率的文章。纵然实际中不方便使用最大似然法来估计频率,还是稍微看看它的性能吧。在Python的LS-ESPRIT中贴出的代码的基础上,写了如下的代码(paramestimate.py):from _future_ import division import scipy import itertools from numpy import trace from scipy.linalg import det,eigvals,pinv,svd from scipy.optimize import fmin from scipy import angle,arange,atleast_1d,complex128,conjugate,convolve,exp,eye,mat,multiply,pi,r_,randn,zeros from numpy.matlib import repmat#-paramestimate.py-#-2010.05.26 Created by xialulee-#-2010.05.31 Modified by xialulee-def Rxx(x,m=None):Estimate autocorrelation matrix of vector xx:signal vector;m:size of Rxx;return value:autocorrelation matrixN=len(x)if m=None:m=N temp=mat(arange(0,m)#generate aindices matrix,as#0-1-2-3.#1 0-1-2.#2 10-1.#3 21 0.#.indices=repmat(temp.T,1,m)-repmat(temp,m,1)#calcuate samples of autocorrelation functions using convolution acsamples=convolve(x,conjugate(x:-1)#using autocorrelation samples and indices matrix to create Rxx#Rxx=#r0r-1r-2r-3.#r1r0r-1r-2.#r2r1r0r-1.#r3r2r1r0.#.return acsamplesindices+N-1/N def ls_esprit(Rxx,p):Estimate signal frequencies using LS-ESPRIT algorithm Rxx:autocorrelation matrix of signal;p:number of complex sinusoids return value:normalized frequencies.Rxx=mat(Rxx)N=Rxx.shape0U,S,Vh=svd(Rxx)#get signal subspace from UUsig=U:,0:p#sub array U0=mat(Usig:N-1,:)U1=mat(Usig1:,:)#calcuate eigenvalues of U1U0 return-angle(eigvals(pinv(U1)*U0)/2./pi def gen_x(n,freqs,amps,sigma):Generate atesting signal.n:sample indices;freqs:normalized frequencies of complex sinusoids;amps:amplitudes of complex sinusoids;sigma:standard deviation of gaussian noise;return value:signal vector.x=complex128(zeros(len(n),)freqs=atleast_1d(freqs)amps=atleast_1d(amps)for freq,amp in itertools.izip(freqs,amps):x+=amp*exp(1j*2*pi*freq*n)x+=sigma*randn(len(n)return xdef Es(freqs,N):Create asteering matrixfreqs=atleast_1d(freqs)E=repmat(r_c,0:N,1,len(freqs)omega=repmat(2*pi*freqs,N,1);return exp(1j*multiply(E,omega)def projector(A):Return orthogonal projector of AA=mat(A)return A*pinv(A)def p_projector(A):Return orthogonal projector of null space of AHP=projector(A)N=P.shape0return mat(eye(N)-P)def freq_mle_2exp(x,freq1,freq2):Frequency Maximum Likelihood EstimateR=mat(Rxx(x)N=len(x)p=2 F=zeros(len(freq1),len(freq2)for k1,f1 in enumerate(freq1):for k2,f2 in enumerate(freq2):A=mat(Es(f1,f2,N)iA=mat(pinv(A)sigma_2=(trace(p_projector(A)*R)/(N-p).real Rs=iA*(R-sigma_2*eye(N)*iA.H Fk1,k2=det(A*Rs*A.H+sigma_2*eye(N).real return F其中函数ls_esprit与本文无关,那是Python的LS-ESPRIT中用的。代码中对每个函数的功能都作了说明。值得注意的是今天的主角freq_mle_2exp,只能用来估计两个复正弦的频率,不多不少,就两个。让我们试试。以pylab模式打开IPython:首先用gen_x创建一个含有高斯白噪声和两个复正弦的信号,并用freq_mle_2exp取得各频率取值的似然函数值:In1:import paramestimate as pe In2:x=pe.gen_x(r_0:10,0.1,0.15,2.,2.,1.)In3:F=pe.freq_mle_2exp(x,r_0:1:0.01,r_0:1:0.01)信号x长度为10,包含了归一化频率为0.1和0.15的两个复正弦。F取极小值时的频率就对应了频率的估计值,但用伪彩图呈现时,最小值不容易看,所以我们绘制1/F的伪彩图,找最大值:In5:imshow(1/F,extent=(0,1,1,0)Out5:matplotlib.image.AxesImage object at 0x0240F9D0 In6:gridon,c=r,ls=-grid(on,c=r,ls=-)极大值出现的坐标接近(0.1,0.15)以及(0.15,0.1),让我们更细致地看看:In7:imshow(1/F:40,:40,extent=(0,0.4,0.4,0)Out7:matplotlib.image.AxesImage object at 0x0288C910 In8:gridon,c=r,ls=-grid(on,c=r,ls=-)In9:colorbar()Out9:matplotlib.colorbar.Colorbar instance at 0x02AE95D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业互联网平台同态加密技术成本效益分析报告
- 安全生产车辆安全培训课件
- 2025国内货物买卖合同范本
- 3.1图形的平移(说课稿)-2023--2024学年北师大版数学八年级下册
- 全国预报竞赛试题及答案
- Unit 9 Section B 1a-1f 说课稿 2024-2025学年人教版八年级英语上册
- 第五章 社会主义时期的文化教学设计-2025-2026学年中职历史中国历史 (全一册)人教版
- 2025汽车租赁合同违约责任解析
- 老年人安全培训课件
- 文化创意产业园区品牌塑造策略与区域经济集聚效应2025年研究报告
- 海绵城市施工方案
- 2023部编新人教版五年级(上册)道德与法治全册教案
- 2024年数控车工技能竞赛理论考试题库500题(含答案)
- 2024年秋季新统编版七年级上册道德与法治全册教案
- GB/T 37977.46-2024静电学第4-6 部分:特定应用中的标准试验方法腕带
- 《矿物岩石学》全套教学课件
- 全国职业院校宠物营养学知识竞赛备考试题库(含答案)
- 休产假工作交接表
- 心理健康五年级上册北师大版第二课 交往从尊重开始 课件
- 护士自我管理规划
- 航海英语会话(一)
评论
0/150
提交评论