- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
复数运算库
可以利用复数运算库进行复数运算。
复数类型的数据
在复数运算库中,可以用复数类型(Complex)作为数据类型。复数类型数据由实部(.real)和虚部(.imag)组成,如下例所示。
Dim Num as Complex
Num.real=1.0
Num.imag=2.0
步骤列表
下表列出了复数运算库包括的步骤。
步骤名 | 功能 |
ComplexSet(x,y) | 确定一个复数。 |
ComplexPolar(x,y) | 确定一个复数。 |
ComplexSetArray(x) | 变量型或双精度浮点型数组转换成复数型数组。 |
ComplexAdd(x,y) | 返回相加的结果。 |
ComplexSub(x,y) | 返回相减的结果。 |
ComplexMul(x,y) | 返回相乘的结果。 |
ComplexDiv(x,y) | 返回相除的结果。 |
ComplexAbs(x) | 返回绝对值。 |
ComplexArg(x) | 返回相角。 |
ComplexNorm(x) | 返回绝对值的平方。 |
ComplexConj(x) | 返回共轭复数。 |
ComplexCos(x) | 返回余弦。 |
ComplexCosh(x) | 返回双曲余弦。 |
ComplexSin(x) | 返回正弦。 |
ComplexSinh(x) | 返回双曲正弦。 |
ComplexExp(x) | 返回ex. |
ComplexLog(x) | 返回自然对数。 |
ComplexLog10(x) | 返回常用对数。 |
ComplexSqrt(x) | 返回平方根。 |
样本程序
:
:
Dim Dmy As Long
Dim s21_raw As Variant
Dim s31_raw As Variant
Dim s21_Comp As Complex
Dim s31_Comp As Complex
Dim trAce_ratio_comp As Complex
Dim trAce_ratio(401) As Double
SCPI.DISPlay.Split = "D1"
SCPI.DISPlay.WINDow(1).Split = "D12_34"
SCPI.CALCulate(1).PARameter.Count = 2
SCPI.CALCulate(1).PARameter(1).DEFine = "s21"
SCPI.CALCulate(1).PARameter(2).DEFine = "s31"
SCPI.SENSe(1).SWEep.POINts = 201
:
:
:
SCPI.TRIGger.SEQuence.Source = "bus"
SCPI.TRIGger.SEQuence.SINGle
Dmy = SCPI.IEEE4882.OPC
'''' Get corrected data array
SCPI.CALCulate(1).PARameter(1).SELect
s21_raw = SCPI.CALCulate(1).SELected.DATA.SDATa
SCPI.CALCulate(1).PARameter(2).SELect
s31_raw = SCPI.CALCulate(1).SELected.DATA.SDATa
For i = 0 To 200
'''' Copy corrected data array to the complex data array
'''' to take advantage of complex operation library
s21_Comp = ComplexSet(s21_raw(2 * i), s21_raw(2 * i + 1))
s31_Comp = ComplexSet(s31_raw(2 * i), s31_raw(2 * i + 1))
'''' Calculate the ratio of S31 and S21
'''' S31/S21
trAce_ratio_comp = ComplexDiv(s31_Comp, s21_Comp)
trAce_ratio(2 * i) = trAce_ratio_comp.real
trAce_ratio(2 * i + 1) = trAce_ratio_comp.imag
Next i
SCPI.CALCulate(1).PARameter.Count = 4
'''' Write "S31/S21" data to corrected data array for the trace 3 (LogMag)
SCPI.CALCulate(1).PARameter(3).SELect
SCPI.CALCulate(1).SELected.Format = "MLOG"
SCPI.CALCulate(1).SELected.DATA.SDATa = trAce_ratio
'''' Write "S31/S21" data to corrected data array for the trace 4 (Phase)
SCPI.CALCulate(1).PARameter(4).SELect
SCPI.CALCulate(1).SELected.Format = "PHASe"
SCPI.CALCulate(1).SELected.DATA.SDATa = trAce_ratio
:
:
上一篇:ComplexAbs(x)
下一篇:测量多端器件