复数运算库

E5071C

复数运算库

可以利用复数运算库进行复数运算。

复数类型的数据

在复数运算库中,可以用复数类型(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

 

:

: