两个解卷绕指令的比较及来源解析_第1页
两个解卷绕指令的比较及来源解析_第2页
两个解卷绕指令的比较及来源解析_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

两个解卷绕指令的比较及来源解析

1matlab处理软件的分析1b是一个具有强大功能的工程计算和价值分析软件。目前,它是世界上应用最广泛的工程计算软件之一。它集矩阵运算、信号处理和图形显示等诸多功能于一体,提供了大量命令供用户使用,构成了一个操作方便且界面友好的操作环境。在使用Matlab对数字信号进行处理的过程中,经常需要对复向量的相位进行解卷绕处理。本文介绍了Matlab所提供的两个用于将信号相位解卷绕的命令“unwrap”和“phase”,深入阐述了它们用法的异同,并结合实例补充更正Matlab帮助文档中的一处疏漏,增强了程序的通用性。2相位解卷绕算法在Matlab语言中,一般情况下,复向量X的相位值θ(单位为弧度)可以通过调用命令“angle(X)”求出,且θ的取值范围被限定在主值区间[-π,π]内,从而造成相位数据在主值区间端点附近出现较大的“跳变”,因此我们需要对相位数据进行解卷绕,以保持相位数据在主值区间端点附近的连续变化,从而得到连续的“自然态”的相位值。Matlab提供了unwrap命令对相位数据进行解卷绕,其语法规则为“P=unwrap(θ,TOL)”。其中θ为储存了待解卷绕的相位的数组,TOL为一个门限值,其默认值为π,当θ中相邻两元素之差的绝对值大于TOL时,Matlab就对θ在主值区间端点附近的跳变进行纠正,被纠正后的相邻两个相位数据之差的绝对值一定小于TOL。此外,Matlab还提供了一个命令phase,调用“P=phase(X)”就可以得到复向量X的解卷绕后的“自然态”的相位值(单位为弧度)。尽管在Matlab的帮助文档中清楚地给出如下关系:“phase(X)=unwrap(angle(X))”,但在实际应用中,我们发现情况并非全都如此。例如,当X={1,—0.75+0.67i,—1+0.09i,一1+0.03i,1—0.09i,1+0.09i,—1—0.03i,—1一0.09i,—0.75—0.67i}时,分别调用“P1=unwrap(angle(X))”和“P2=phase(X)”后所得结果如图1所示。我们发现两种相位解卷绕方法对同一数据的处理结果从第五个数据点开始出现差异,这与Matlab帮助文档中“phase(X)=unwrap(angle(X))”的说法似乎不太一致。那么,造成这种现象的原因究竟是什么呢?3分析和解决问题的方法3.1phase命令门限值的确定当我们调用“PI=unwrap(angle(X))”时,实际上是将门限值TOL的值设置为默认值π,也就是说,P1中相邻两元素之差的绝对值一定不大于π。通过对图1中P1曲线进行分析就可以证明这一点,但同时我们发现,该图中P2曲线的第四、五数据点之差的绝对值约为3.2,鉴于前面所得的结论,任意相邻的两个数据点之差的绝对值一定小于门限值TOL。这说明在“P2=phase(X)”这个命令的调用过程中采用的门限值一定不是π,而是一个大于3.2的值。在Matlab的帮助文档中查不到phase命令的门限值的相关信息,这说明其门限值并不能以参数的形式被传入和修改,也即它应该是一个确定值。那么这个值的大小为多少呢?在Matlab命令窗口中的命令提示符“>>”后输入“openphase”(只输入引号内的文本,下同),即可打开包含phase命令的M文件,在该文件的第27行,存在着如下所示的代码:“I=find(abs(DF)>3.5)”;其中的“3.5”即为phase命令对相位进行解卷绕时所采用的门限值。我们可以据此对图1中两组本应重合的数据发生“差异”现象给出合理的解释:当调用“P1=unwrap(angle(X))”时,由于X的第四个和第五个元素相位差的绝对值约为3.2,大于unwrap命令畎认的门限值π,因此从X的第五个元素开始,Matlab对X的相位进行纠正,而当调用“P2=phase(X)”时,由于X的第四个和第五个元素相位差的绝对值小于phase命令的门限值3.5,因此Matlab对X的相位不予纠正。3.2phase命令的修改经过以上论述,我们基本了解了Matlab中unwrap命令和phase命令功能的异同,相对于“P=unwrap(angle(X))”而言,“P=phase(X)”具有输入方便的特点,因此我们希望在对信号的相位解卷绕的过程中能够尽量多的使用phase命令。前面提到过,phase命令的门限值并不能以参数的形式被传入和修改,但我们可以利用Matlab代码的开放性,对phase命令M文件的代码进行修改。根据前面得到的结论将phase命令M文件第27行中的“3.5”修改为“pi”后保存,此时运行“phase(X)”和“unwrap(angle(X))”的结果完全等同。当然也可以根据实际需要将这个“3.5”修改为任何一个合适的值。此处为了便于对比,我们将phase命令M文件第27行中的“3.5”修改为“pi”后,分别调用“P1=unwrap(angle(X))”和“P2=phase(X)”所得结果如图2所示:由此可见只有当unwrap与phase这两个命令的门限值相等时,其结果才相同。在得到这个结论之后,就可以使我们对Matlab中的unwrap与phase这两个命令的使用更加得心应手,同时,也能够最大限度的减小Matlab的运算结果与理论值发生差异的可能性。4matlab中的相位解卷绕命令为了增加phase命令的通用性,避免经常性地修改M文件所带来的不便,我们可以在phase命令的M文件中第1行和第27行作如下改动:其中输入参量TOL即为phase命令的门限值。当它与unwrap命令的门限值相同时,这两个命令对同—个信号的处理结果也必定相同。作为—种功能强大,性能优异的工程计算软件,Matlab在数值分析、系统建模、数字信号处理以及自动控制理论等领域都具有较高的应用价值。其开放的代码和友好的操作界面也极大地增强了自身的通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论