官方淘宝店 易迪拓培训 旧站入口
首页 > 仿真设计 > HFSS仿真设计论坛 > Matlab问题

Matlab问题

05-08
>>  a=[exp(i*3.14)  exp(-i*3.14)]
a =
  -1.0000 + 0.0016i  -1.0000 - 0.0016i
>> phase(a)
ans =
    3.1400    3.1432
>> b=-1.0000 - 0.0016i
b =
  -1.0000 - 0.0016i
>> phase(b)
ans =
   -3.1400两次算的的结果为什么不一样呢?

我也遇到过这种问题,好像矩阵运算的时候都会出现这种误差,按照下面的方法来就好了
>> a=[exp(i*3.14),exp(-i*3.14)] ;
b1=phase(a(1,1))
b2=phase(a(1,2))
b1 =
    3.1400
b2 =
   -3.1400

那为什么HFSS仿真出来的相位要用phase函数处理呢,不直接把仿真出来的S21的相位作为其相位呢?

请问你研究过PRE70,,016608(2004)这篇文章没?

电磁仿真软件都可以输出s2p格式的文件,里面可以写成幅度和相位的输出
hfss我用的不多,你可以试试
那个文章我没有研究过。

我查了一下phase函数的用法如下:phase 和 angle 在输入为单个标量数据时,没有差别,二者都是用 atan2 函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别比较大。
1. phase 只支持标量和一维(行、列)向量输入,不支持二维或高维矩阵输入。angle 可以支持标量或任意维数矩阵输入
2. 对于向量输入,phase 会对输出结果做判断,如果相邻两个输出角度的差的绝对值超过 3.5,phase 会对其重新处理,确保相邻两个角度差值的绝对值永远不超过3.5。而 angle 函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。

还真是呢,angle就对了,谢谢你哈研究得挺仔细的

Top