理想正弦信号可用下述四参数表达式表示:
y
(
t
)
=
A
0
cos
(
ω
0
t
)
+
B
0
sin
(
ω
0
t
)
+
C
0
y(t)=A_0\cos(\omega_0t)+B_0\sin(\omega_0t)+C_0
y(t)=A0cos(ω0t)+B0sin(ω0t)+C0
或:
y
(
t
)
=
A
0
cos
(
ω
0
t
+
θ
)
+
C
y(t)=A_0\cos(\omega_0t+\theta)+C
y(t)=A0cos(ω0t+θ)+C
用指定参数的正弦波作为数字存储示波器的输人,得到一组数据记录。通过改变拟合正弦信号的相位、幅度、直流偏移和频率,使拟合结果和输人记录序列各点的残差平方和最小。这里提供两种正弦拟合方法:一种用于采样频率和被测信号输入频率均已知时;另一种用于信号频率未知时。第一个途径包括两种算法:一种通过矩阵运算,另一种通过迭代过程。对于已知信号频率的情况,当初始条件相同时,上述两个算法结果一致。但两者和收敛性不一样,使用矩阵算法的收敛速度比不使用矩阵的快,特别是信号周期数小于
5
5
5个时。
注: 下列 1 1 1中所述的三参数算法(对已知频率)是一种闭合算法。因此,总能获得一个结果。但是,如果算法中使用的频率(假设已知)和实际输入的频率不一样,或采集速率有较大误差,三参数算法的结果比稍后所述的四参数算法结果要差。但 2 2 2中的四参数算法在初始条件偏离较多,或有一些特别不正确的数据下,迭代过程可能发散。
1 正弦波三参数(已知频率)最小二乘拟合算法
1.1 正弦信号三参数最小二乘拟合——矩阵算法
设理想正弦信号为:
y
(
t
)
=
A
0
cos
(
ω
0
t
)
+
B
0
sin
(
ω
0
t
)
+
C
0
y(t)=A_0\cos(\omega_0t)+B_0\sin(\omega_0t)+C_0
y(t)=A0cos(ω0t)+B0sin(ω0t)+C0
数据记录序列为时刻
t
1
,
t
2
,
.
.
.
,
t
m
t_1,t_2,...,t_m
t1,t2,...,tm的采集样本
Y
1
,
Y
2
,
.
.
.
,
Y
m
Y_1,Y_2,...,Y_m
Y1,Y2,...,Ym,拟合过程即为选取或寻找
A
0
,
B
0
,
C
0
A_0,B_0,C_0
A0,B0,C0,使下式所述残差平方和最小:
∑
n
=
1
M
[
Y
n
−
A
0
cos
(
ω
0
t
)
−
B
0
sin
(
ω
0
t
)
−
C
0
]
2
\begin{equation} \sum_{n=1}^{M}[Y_n-A_0\cos(\omega_0t)-B_0\sin(\omega_0t)-C_0]^2 \end{equation}
n=1∑M[Yn−A0cos(ω0t)−B0sin(ω0t)−C0]2
式中
ω
0
\omega_0
ω0是数字存储示波器输人信号频率(假设已知)。
为了找出合适的
A
0
,
B
0
A_0,B_0
A0,B0和
C
0
C_0
C0值,首先构造下列矩阵:
D
0
=
[
cos
(
ω
0
t
1
)
sin
(
ω
0
t
1
)
1
cos
(
ω
0
t
2
)
sin
(
ω
0
t
2
)
1
⋮
⋮
⋮
cos
(
ω
0
t
M
)
sin
(
ω
0
t
M
)
1
]
y
=
[
y
1
y
2
⋮
y
M
]
x
0
=
[
A
0
B
0
C
0
]
D_0 = \begin{bmatrix} \cos(\omega_0t_1) & \sin(\omega_0t_1) & 1 \\ \cos(\omega_0t_2) & \sin(\omega_0t_2) & 1 \\ \vdots & \vdots & \vdots \\ \cos(\omega_0t_M) & \sin(\omega_0t_M) & 1 \end{bmatrix} \ y= \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_M \end{bmatrix}\ x_0 = \begin{bmatrix} A_0 \\ B_0 \\ C_0 \end{bmatrix}
D0=
cos(ω0t1)cos(ω0t2)⋮cos(ω0tM)sin(ω0t1)sin(ω0t2)⋮sin(ω0tM)11⋮1
y=
y1y2⋮yM
x0=
A0B0C0
式
(
1
)
(1)
(1)可用矩阵方式表示如下
(
y
−
D
0
x
0
)
T
(
y
−
D
0
x
0
)
\begin{equation} (y-D_0x_0)^T(y-D_0x_0) \end{equation}
(y−D0x0)T(y−D0x0)
这里
(
∗
)
T
(*)^T
(∗)T*表示矩阵
(
∗
)
(*)
(∗)*的转置,可以得出式
(
2
)
(2)
(2)最小时的最小二乘解
x
0
^
\hat{x_0}
x0^
x
0
^
=
(
D
0
T
D
0
)
−
1
(
D
0
T
y
)
\hat{x_0} = (D_0^TD_0)^{-1}(D_0^Ty)
x0^=(D0TD0)−1(D0Ty)
拟合函数为:
y
n
′
=
A
0
cos
(
ω
0
t
n
)
+
B
0
sin
(
ω
0
t
n
)
+
C
0
y_n'=A_0\cos(\omega_0t_n)+B_0\sin(\omega_0t_n)+C_0
yn′=A0cos(ω0tn)+B0sin(ω0tn)+C0
将其转换为幅度和相位表达形式:
y
n
′
=
A
cos
(
ω
0
t
n
+
θ
)
+
C
y_n'=A\cos(\omega_0t_n+\theta)+C
yn′=Acos(ω0tn+θ)+C
式 中:
A
=
A
0
2
+
B
0
2
θ
=
tan
−
1
[
−
B
0
A
0
]
,
A
0
≥
0
θ
=
tan
−
1
[
−
B
0
A
0
]
+
π
,
A
0
<
0
A =\ \sqrt[]{A_0^2+B_0^2} \\ \theta = \tan^{-1}[\frac{-B_0}{A_0}],\ A_0\ge 0 \\ \theta = \tan^{-1}[\frac{-B_0}{A_0}]\ +\ \pi,\ A_0 < 0
A= A02+B02θ=tan−1[A0−B0], A0≥0θ=tan−1[A0−B0] + π, A0<0
拟合残差
r
n
r_n
rn,如下:
r
n
=
y
n
−
A
0
cos
(
ω
0
t
n
)
−
B
0
sin
(
ω
0
t
n
)
−
C
0
r_n=y_n-A_0\cos( \omega_0t_n)-B_0\sin(\omega_0t_n)-C_0
rn=yn−A0cos(ω0tn)−B0sin(ω0tn)−C0
拟合残差有效值如下:
ϵ
r
m
s
=
1
M
∑
n
=
1
M
r
n
2
\epsilon_{rms}=\sqrt[]{\frac{1}{M}\sum_{n=1}^{M}{r_n^2}}
ϵrms=M1n=1∑Mrn2
1.2 正弦信号三参数最小二乘拟合——代数方程算法
设数据记录序列为包含了一系列在时刻 t M t_M tM上采集的正弦信号样本 y M y_M yM,数字存储示波器输人信号的角频率为 ω \omega ω,定义:
α
n
=
cos
(
ω
t
n
)
β
n
=
sin
(
ω
t
n
)
\alpha_n = \cos(\omega t_n) \\ \beta_n = \sin(\omega t_n)
αn=cos(ωtn)βn=sin(ωtn)
然后计算下面9个和:
∑
n
=
1
M
y
n
∑
n
=
1
M
α
n
∑
n
=
1
M
β
n
∑
n
=
1
M
α
n
β
n
∑
n
=
1
M
α
n
2
∑
n
=
1
M
β
n
2
∑
n
=
1
M
y
n
α
n
∑
n
=
1
M
y
n
β
n
∑
n
=
1
M
y
n
2
\sum_{n=1}^{M}{y_n}\ \ \ \ \sum_{n=1}^{M}{\alpha_n}\ \ \ \ \sum_{n=1}^{M}{\beta_n}\\ \sum_{n=1}^{M}{\alpha_n\beta_n}\ \ \ \ \sum_{n=1}^{M}{\alpha_n^2}\ \ \ \ \sum_{n=1}^{M}{\beta_n^2}\\ \sum_{n=1}^{M}{y_n\alpha_n}\ \ \ \ \sum_{n=1}^{M}{y_n\beta_n}\ \ \ \ \sum_{n=1}^{M}{y_n^2}\\
n=1∑Myn n=1∑Mαn n=1∑Mβnn=1∑Mαnβn n=1∑Mαn2 n=1∑Mβn2n=1∑Mynαn n=1∑Mynβn n=1∑Myn2
使用这些和计算:
A
1
=
A
N
A
D
B
1
=
B
N
B
D
C
=
y
ˉ
−
A
1
α
ˉ
−
B
1
β
ˉ
A_1=\frac{A_N}{A_D} \\ B_1=\frac{B_N}{B_D} \\ C=\bar{y}-A_1\bar{\alpha}-B_1\bar{\beta}
A1=ADANB1=BDBNC=yˉ−A1αˉ−B1βˉ
式中:
A
N
=
∑
n
=
1
M
y
n
α
n
−
y
ˉ
∑
n
=
1
M
α
n
∑
n
=
1
M
α
n
β
n
−
β
ˉ
∑
n
=
1
M
α
n
−
∑
n
=
1
M
y
n
β
n
−
y
ˉ
∑
n
=
1
M
β
n
∑
n
=
1
M
β
n
2
−
β
ˉ
∑
n
=
1
M
β
n
A
D
=
∑
n
=
1
M
α
n
2
−
α
ˉ
∑
n
=
1
M
α
n
∑
n
=
1
M
α
n
β
n
−
β
ˉ
∑
n
=
1
M
α
n
−
∑
n
=
1
M
α
n
β
n
−
α
ˉ
∑
n
=
1
M
β
n
∑
n
=
1
M
β
n
2
−
β
ˉ
∑
n
=
1
M
β
n
B
N
=
∑
n
=
1
M
y
n
α
n
−
y
ˉ
∑
n
=
1
M
α
n
∑
n
=
1
M
α
n
2
−
α
ˉ
∑
n
=
1
M
α
n
−
∑
n
=
1
M
y
n
β
n
−
y
ˉ
∑
n
=
1
M
β
n
∑
n
=
1
M
α
n
β
n
−
α
ˉ
∑
n
=
1
M
β
n
B
D
=
∑
n
=
1
M
α
n
β
n
−
β
ˉ
∑
n
=
1
M
α
n
∑
n
=
1
M
α
n
2
−
α
ˉ
∑
n
=
1
M
α
n
−
∑
n
=
1
M
β
n
2
−
β
ˉ
∑
n
=
1
M
β
n
∑
n
=
1
M
α
n
β
n
−
α
ˉ
∑
n
=
1
M
β
n
y
ˉ
=
1
M
∑
n
=
1
M
y
n
α
ˉ
=
1
M
∑
n
=
1
M
α
n
β
ˉ
=
1
M
∑
n
=
1
M
β
n
A_N=\frac{\sum_{n=1}^{M}{y_n\alpha_n}-\bar{y}\sum_{n=1}^{M}{\alpha_n}}{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\beta}\sum_{n=1}^{M}{\alpha_n}}-\frac{\sum_{n=1}^{M}{y_n\beta_n}-\bar{y}\sum_{n=1}^{M}{\beta_n}}{\sum_{n=1}^{M}{\beta_n^2}-\bar{\beta}\sum_{n=1}^{M}{\beta_n}} \\ A_D=\frac{\sum_{n=1}^{M}{\alpha_n^2}-\bar{\alpha}\sum_{n=1}^{M}{\alpha_n}}{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\beta}\sum_{n=1}^{M}{\alpha_n}}-\frac{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\alpha}\sum_{n=1}^{M}{\beta_n}}{\sum_{n=1}^{M}{\beta_n^2}-\bar{\beta}\sum_{n=1}^{M}{\beta_n}} \\ B_N=\frac{\sum_{n=1}^{M}{y_n\alpha_n}-\bar{y}\sum_{n=1}^{M}{\alpha_n}}{\sum_{n=1}^{M}{\alpha_n^2}-\bar{\alpha}\sum_{n=1}^{M}{\alpha_n}}-\frac{\sum_{n=1}^{M}{y_n\beta_n}-\bar{y}\sum_{n=1}^{M}{\beta_n}}{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\alpha}\sum_{n=1}^{M}{\beta_n}} \\ B_D=\frac{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\beta}\sum_{n=1}^{M}{\alpha_n}}{\sum_{n=1}^{M}{\alpha_n^2}-\bar{\alpha}\sum_{n=1}^{M}{\alpha_n}}-\frac{\sum_{n=1}^{M}{\beta_n^2}-\bar{\beta}\sum_{n=1}^{M}{\beta_n}}{\sum_{n=1}^{M}{\alpha_n\beta_n}-\bar{\alpha}\sum_{n=1}^{M}{\beta_n}} \\ \bar{y}=\frac{1}{M}\sum_{n=1}^{M}{y_n}\ \ \ \bar{\alpha}=\frac{1}{M}\sum_{n=1}^{M}{\alpha_n}\ \ \ \bar{\beta}=\frac{1}{M}\sum_{n=1}^{M}{\beta_n}
AN=∑n=1Mαnβn−βˉ∑n=1Mαn∑n=1Mynαn−yˉ∑n=1Mαn−∑n=1Mβn2−βˉ∑n=1Mβn∑n=1Mynβn−yˉ∑n=1MβnAD=∑n=1Mαnβn−βˉ∑n=1Mαn∑n=1Mαn2−αˉ∑n=1Mαn−∑n=1Mβn2−βˉ∑n=1Mβn∑n=1Mαnβn−αˉ∑n=1MβnBN=∑n=1Mαn2−αˉ∑n=1Mαn∑n=1Mynαn−yˉ∑n=1Mαn−∑n=1Mαnβn−αˉ∑n=1Mβn∑n=1Mynβn−yˉ∑n=1MβnBD=∑n=1Mαn2−αˉ∑n=1Mαn∑n=1Mαnβn−βˉ∑n=1Mαn−∑n=1Mαnβn−αˉ∑n=1Mβn∑n=1Mβn2−βˉ∑n=1Mβnyˉ=M1n=1∑Myn αˉ=M1n=1∑Mαn βˉ=M1n=1∑Mβn
拟合函数如下:
y
n
′
=
A
1
cos
(
ω
t
n
)
+
B
1
sin
(
ω
t
n
)
+
C
y_n'=A_1\cos(\omega t_n)+B_1\sin(\omega t_n)+C
yn′=A1cos(ωtn)+B1sin(ωtn)+C
其幅度和相位表达形式:
y
n
′
=
A
cos
(
ω
t
n
+
θ
)
+
C
y_n'=A\cos(\omega t_n+\theta)+C
yn′=Acos(ωtn+θ)+C
式中:
A
=
A
1
2
+
B
1
2
θ
=
tan
−
1
[
−
B
1
A
1
]
,
A
1
≥
0
θ
=
tan
−
1
[
−
B
1
A
1
]
+
π
,
A
1
<
0
A =\ \sqrt[]{A_1^2+B_1^2} \\ \theta = \tan^{-1}[\frac{-B_1}{A_1}],\ A_1\ge 0 \\ \theta = \tan^{-1}[\frac{-B_1}{A_1}]\ +\ \pi,\ A_1 < 0
A= A12+B12θ=tan−1[A1−B1], A1≥0θ=tan−1[A1−B1] + π, A1<0
拟合残差有效值为:
ϵ
r
m
s
=
ϵ
M
\epsilon_{rms}=\sqrt[]{\frac{\epsilon}{M}}
ϵrms=Mϵ
式中:
ϵ
=
∑
n
=
1
M
y
n
2
+
A
1
2
∑
n
=
1
M
α
n
2
+
B
1
2
∑
n
=
1
M
β
n
2
+
M
C
2
−
2
A
1
∑
n
=
1
M
α
n
y
n
−
2
B
1
∑
n
=
1
M
β
n
y
n
−
2
C
∑
n
=
1
M
y
n
+
2
A
1
B
1
∑
n
=
1
M
α
n
β
n
+
2
A
1
C
∑
n
=
1
M
α
n
+
2
B
1
C
∑
n
=
1
M
β
n
=
∑
n
=
1
M
(
y
n
−
A
1
α
n
−
B
1
β
n
−
C
)
2
=
∑
n
=
1
M
(
y
n
−
y
n
′
)
2
\epsilon = \sum_{n=1}^{M}{y_n^2}+A_1^2\sum_{n=1}^{M}{\alpha_n^2}+B_1^2\sum_{n=1}^{M}{\beta_n^2}+MC^2-2A_1\sum_{n=1}^{M}{\alpha_ny_n}-2B_1\sum_{n=1}^{M}{\beta_ny_n}-2C\sum_{n=1}^{M}{y_n}+2A_1B_1\sum_{n=1}^{M}{\alpha_n\beta_n}+2A_1C\sum_{n=1}^{M}{\alpha_n}+2B_1C\sum_{n=1}^{M}{\beta_n} = \sum_{n=1}^{M}{(y_n-A_1\alpha_n-B_1\beta_n-C)^2}=\sum_{n=1}^{M}{(y_n-y_n')^2}
ϵ=n=1∑Myn2+A12n=1∑Mαn2+B12n=1∑Mβn2+MC2−2A1n=1∑Mαnyn−2B1n=1∑Mβnyn−2Cn=1∑Myn+2A1B1n=1∑Mαnβn+2A1Cn=1∑Mαn+2B1Cn=1∑Mβn=n=1∑M(yn−A1αn−B1βn−C)2=n=1∑M(yn−yn′)2
由于这是一种闭合算法,因而收敛是肯定的。
2 正弦波四参数最小二乘拟合算法
2.1正弦波信号四参数最小二乘拟合——矩阵迭代算法
设正弦数据记录序列中时刻
t
1
,
t
2
,
.
.
.
,
t
m
t_1,t_2,...,t_m
t1,t2,...,tm上采集的样本
y
1
,
y
2
,
.
.
.
,
y
m
y_1,y_2,...,y_m
y1,y2,...,ym,可使用迭代过程寻找到
A
i
,
B
i
,
C
i
A_i,B_i,C_i
Ai,Bi,Ci和
ω
i
\omega_i
ωi值,使得下式所述残差平方和最小:
∑
n
=
1
M
[
y
n
−
A
1
cos
(
ω
i
t
n
)
−
B
i
sin
(
ω
i
t
n
)
−
C
i
]
2
\begin{equation} \sum_{n=1}^{M}\left[y_{n}-A_{1} \cos \left(\omega_{i} t_{n}\right)-B_{i} \sin \left(\omega_{i} t_{n}\right)-C_{i}\right]^{2} \end{equation}
n=1∑M[yn−A1cos(ωitn)−Bisin(ωitn)−Ci]2
式中, ω i \omega_i ωi为数字存储示波器输人信号的频率。
其操作步骤如下:
a)设置循环指针
i
=
0
i=0
i=0,对数字存储示波器输人信号的角频率
ω
0
\omega_0
ω0作一个初始估计。可以用离散傅里叶变换(
D
F
T
DFT
DFT)来计算频率;或者通过数波形过零点个数计算频率;或简单地输人一个测量频率初始值。使用
1
1
1中给定的三参数矩阵算法,进行拟合以确定
A
0
,
B
0
A_0,B_0
A0,B0和
C
0
C_0
C0。
b)设置
i
=
i
+
1
i=i+1
i=i+1作下一次迭代。
c)使用下式获得新的角频率:
ω
i
=
ω
i
−
1
+
Δ
ω
i
−
1
(
当
i
=
1
时,
Δ
ω
i
−
1
=
0
)
\omega_{i}=\omega_{i-1}+\Delta\omega_{i-1}\ \ (当i=1时,\Delta\omega_{i-1}=0)
ωi=ωi−1+Δωi−1 (当i=1时,Δωi−1=0)
d)构造如下矩阵
y
=
[
y
1
y
2
⋮
y
M
]
D
i
=
[
cos
(
ω
i
t
1
)
sin
(
ω
i
t
1
)
1
−
A
i
−
1
t
1
sin
(
ω
i
t
1
)
+
B
i
−
1
t
1
cos
(
ω
i
t
1
)
cos
(
ω
i
t
2
)
sin
(
ω
i
t
2
)
1
−
A
i
−
1
t
2
sin
(
ω
i
t
2
)
+
B
i
−
1
t
2
cos
(
ω
i
t
2
)
⋮
⋮
⋮
⋮
cos
(
ω
i
t
M
)
sin
(
ω
i
t
M
)
1
−
A
i
−
1
t
M
sin
(
ω
i
t
M
)
+
B
i
−
1
t
M
cos
(
ω
i
t
M
)
]
x
i
=
[
A
i
B
i
C
i
Δ
ω
i
]
y=\left[\begin{array}{c}y_{1} \\y_{2} \\\vdots \\y_{M}\end{array}\right] \\\begin{array}{l}\mathrm{D}_{\mathrm{i}}=\left[\begin{array}{cccc}\cos \left(\omega_{i} t_{1}\right) & \sin \left(\omega_{i} t_{1}\right) & 1 & -A_{i-1} t_{1} \sin \left(\omega_{i} t_{1}\right)+B_{i-1} t_{1} \cos \left(\omega_{i} t_{1}\right) \\\cos \left(\omega_{i} t_{2}\right) & \sin \left(\omega_{i} t_{2}\right) & 1 & -A_{i-1} t_{2} \sin \left(\omega_{i} t_{2}\right)+B_{i-1} t_{2} \cos \left(\omega_{i} t_{2}\right) \\\vdots & \vdots & \vdots & \vdots \\\cos \left(\omega_{i} t_{M}\right) & \sin \left(\omega_{i} t_{M}\right) & 1 & -A_{i-1} t_{M} \sin \left(\omega_{i} t_{M}\right)+B_{i-1} t_{M} \cos \left(\omega_{i} t_{M}\right)\end{array}\right] \\x_{i}=\left[\begin{array}{l}A_{i} \\B_{i} \\C_{i} \\\Delta \omega_{i}\end{array}\right]\end{array}
y=
y1y2⋮yM
Di=
cos(ωit1)cos(ωit2)⋮cos(ωitM)sin(ωit1)sin(ωit2)⋮sin(ωitM)11⋮1−Ai−1t1sin(ωit1)+Bi−1t1cos(ωit1)−Ai−1t2sin(ωit2)+Bi−1t2cos(ωit2)⋮−Ai−1tMsin(ωitM)+Bi−1tMcos(ωitM)
xi=
AiBiCiΔωi
e)使式(3)达到最小的最小二乘解用矩阵形式表示如下:
x
i
^
=
(
D
i
T
D
i
)
−
1
(
D
i
T
y
)
\hat{x_i}=(D_i^TD_i)^{-1}(D_i^Ty)
xi^=(DiTDi)−1(DiTy)
f)按下式计算幅度
A
A
A和相位
θ
\theta
θ:
y
n
′
=
A
cos
(
ω
t
n
+
θ
)
+
C
y_n'=A\cos(\omega t_n+\theta)+C
yn′=Acos(ωtn+θ)+C
式中:
A
=
A
i
2
+
B
i
2
θ
=
tan
−
1
[
−
B
i
A
i
]
,
A
i
≥
0
θ
=
tan
−
1
[
−
B
i
A
i
]
+
π
,
A
i
<
0
A =\ \sqrt[]{A_i^2+B_i^2} \\ \theta = \tan^{-1}[\frac{-B_i}{A_i}],\ A_i\ge 0 \\ \theta = \tan^{-1}[\frac{-B_i}{A_i}]\ +\ \pi,\ A_i < 0
A= Ai2+Bi2θ=tan−1[Ai−Bi], Ai≥0θ=tan−1[Ai−Bi] + π, Ai<0
9)重复步骤b)到f),根据上一次迭代得到的
A
i
,
B
i
,
ω
i
A_i,B_i,\omega_i
Ai,Bi,ωi的值,继续迭代直到与
A
,
ω
,
θ
A,\omega,\theta
A,ω,θ和
C
C
C的变化小到满足要求。
拟合残差如下:
r
n
=
y
n
−
A
i
cos
(
ω
i
t
n
)
−
B
i
sin
(
ω
i
t
n
)
−
C
i
r_n=y_n-A_i\cos( \omega_it_n)-B_i\sin(\omega_it_n)-C_i
rn=yn−Aicos(ωitn)−Bisin(ωitn)−Ci
误差有效值如下:
ϵ
r
m
s
=
1
M
∑
n
=
1
M
r
n
2
\epsilon_{rms}=\sqrt[]{\frac{1}{M}\sum_{n=1}^{M}{r_n^2}}
ϵrms=M1n=1∑Mrn2
2.2 正弦信号四参数最小二乘拟合——非矩阵迭代算法
对采集记录下来的数据序列估计一个角频率初始值
ω
\omega
ω和相位初始值
θ
\theta
θ,这里的相位指的是记录中的第一个点对应的相位。角频率用弧度每秒来表示,可以用离散傅里叶变换(
D
F
T
DFT
DFT)或计算序列过零次数得到,也可以直接使用输人信号频率算得。
相位用弧度来表示,可以按
1
1
1中所述三参数法计算得到。或者用下面的公式计算得到:
[
sign
(
y
2
−
y
1
)
]
cos
−
1
(
y
1
−
C
A
)
{\left[\operatorname{sign}\left(y_{2}-y_{1}\right)\right] \cos ^{-1}\left(\frac{y_{1}-C}{A}\right)}
[sign(y2−y1)]cos−1(Ay1−C)
式中:
sign
(
y
2
−
y
1
)
=
{
1
,
y
2
⩾
y
1
−
1
,
y
2
<
y
1
\operatorname{sign}\left(y_{2}-y_{1}\right)=\left\{\begin{array}{l}1, y_{2} \geqslant y_{1} \\-1, y_{2}<y_{1}\end{array}\right.
sign(y2−y1)={1,y2⩾y1−1,y2<y1
y
1
y_1
y1是
t
=
0
t=0
t=0的第一个样本点;
y
2
y_2
y2是紧跟着
y
1
y_1
y1的下一个样本点;
C
,
A
C,A
C,A分别是正弦波的直流偏移和幅度。
使用上式计算时,估计波形幅度可以参照如下方法:(1)如果数字存储示波器噪声不大,用记录数据中的最大值和最小值的代数差的一半作为波形幅度。(2)用众数法找最大和最小值,计算波形幅度。估计偏移的方法:(1)可以使用记录中的最大值和最小值之和的一半。(2)偏移估计的另一方法是取整数个周期的数据的平均值。注意,如果在每个周期中点太少,符号
(
y
2
−
y
1
)
(y_2-y_1)
(y2−y1)能给出不正确的情况。特别是在
cos
−
1
\cos^{-1}
cos−1值接近
0
0
0或
π
\pi
π时。
设数据记录序列中包含了一系列时刻
t
n
t_n
tn的取样
y
n
y_n
yn,用以估计
ω
\omega
ω和
θ
\theta
θ,计算下面的16个和:
∑
n
=
1
M
α
n
∑
n
=
1
M
β
n
∑
n
=
1
M
y
n
∑
n
=
1
M
α
n
y
n
∑
n
=
1
M
β
n
y
n
∑
n
=
1
M
α
n
β
n
∑
n
=
1
M
β
n
2
∑
n
=
1
M
α
n
2
∑
n
=
1
M
y
n
2
∑
n
=
1
M
β
n
t
n
y
n
∑
n
=
1
M
α
n
β
n
t
n
∑
n
=
1
M
β
n
2
t
n
∑
n
=
1
M
β
n
2
t
n
2
∑
n
=
1
M
β
n
t
n
∑
n
=
1
M
α
n
t
n
∑
n
=
1
M
β
n
t
n
2
\begin{array}{llll}\sum_{n=1}^{M} \alpha_{n} & \sum_{n=1}^{M} \beta_{n} & \sum_{n=1}^{M} y_{n} & \sum_{n=1}^{M} \alpha_{n} y_{n} \\\sum_{n=1}^{M} \beta_{n} y_{n} & \sum_{n=1}^{M} \alpha_{n} \beta_{n} & \sum_{n=1}^{M} \beta_{n}^{2} & \sum_{n=1}^{M} \alpha_{n}^{2} \\\sum_{n=1}^{M} y_{n}^{2} & \sum_{n=1}^{M} \beta_{n} t_{n} y_{n} & \sum_{n=1}^{M} \alpha_{n} \beta_{n} t_{n} & \sum_{n=1}^{M} \beta_{n}^{2} t_{n} \\\sum_{n=1}^{M} \beta_{n}^{2} t_{n}^{2} & \sum_{n=1}^{M} \beta_{n} t_{n} & \sum_{n=1}^{M} \alpha_{n} t_{n} & \sum_{n=1}^{M} \beta_{n} t_{n}^{2}\end{array}
∑n=1Mαn∑n=1Mβnyn∑n=1Myn2∑n=1Mβn2tn2∑n=1Mβn∑n=1Mαnβn∑n=1Mβntnyn∑n=1Mβntn∑n=1Myn∑n=1Mβn2∑n=1Mαnβntn∑n=1Mαntn∑n=1Mαnyn∑n=1Mαn2∑n=1Mβn2tn∑n=1Mβntn2
式中:
α
n
=
cos
(
ω
t
n
+
θ
)
β
n
=
sin
(
ω
t
n
+
θ
)
\begin{array}{l}\alpha_{n}=\cos \left(\omega t_{n}+\theta\right) \\\beta_{n}=\sin \left(\omega t_{n}+\theta\right)\end{array}
αn=cos(ωtn+θ)βn=sin(ωtn+θ)
现在使用
ω
\omega
ω和
θ
\theta
θ的估计值,计算:
Ψ
=
ω
+
a
22
R
−
a
12
S
a
11
a
22
−
a
12
a
21
ϕ
=
θ
+
a
11
S
−
a
21
R
a
11
a
22
−
a
12
a
21
\begin{aligned}\Psi & =\omega+\frac{a_{22} R-a_{12} S}{a_{11} a_{22}-a_{12} a_{21}} \\\phi & =\theta+\frac{a_{11} S-a_{21} R}{a_{11} a_{22}-a_{12} a_{21}}\end{aligned}
Ψϕ=ω+a11a22−a12a21a22R−a12S=θ+a11a22−a12a21a11S−a21R
式中:
a
11
=
∑
n
=
1
M
β
n
t
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
t
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
−
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
β
n
t
n
2
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
a
12
=
∑
n
=
1
M
β
n
t
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
−
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
β
n
t
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
a
21
=
∑
n
=
1
M
β
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
t
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
−
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
β
n
t
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
a
22
=
∑
n
=
1
M
β
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
−
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
β
n
(
β
n
−
β
ˉ
)
[
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
]
2
R
=
∑
n
=
1
M
β
n
t
n
(
y
n
−
y
ˉ
)
∑
n
=
1
M
α
n
(
y
n
−
y
ˉ
)
−
∑
n
=
1
M
t
n
β
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
S
=
∑
n
=
1
M
β
n
(
y
n
−
y
ˉ
)
∑
n
=
1
M
α
n
(
y
n
−
y
ˉ
)
−
∑
n
=
1
M
β
n
(
α
n
−
α
ˉ
)
∑
n
=
1
M
α
n
(
α
n
−
α
ˉ
)
y
ˉ
=
1
M
∑
n
=
1
M
y
n
α
ˉ
=
1
M
∑
n
=
1
M
α
n
β
ˉ
=
1
M
∑
n
=
1
M
β
n
α
n
=
cos
(
ω
t
n
+
θ
)
β
n
=
sin
(
ω
t
n
+
θ
)
\begin{array}{l}a_{11}=\frac{\sum_{n=1}^{M} \beta_{n} t_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \alpha_{n} t_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}}-\frac{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \beta_{n} t_{n}^{2}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}} \\a_{12}=\frac{\sum_{n=1}^{M} \beta_{n} t_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \alpha_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}}-\frac{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \beta_{n} t_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}} \\a_{21}=\frac{\sum_{n=1}^{M} \beta_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \alpha_{n} t_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}}-\frac{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \beta_{n} t_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}} \\a_{22}=\frac{\sum_{n=1}^{M} \beta_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \alpha_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}}-\frac{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right) \sum_{n=1}^{M} \beta_{n}\left(\beta_{n}-\bar{\beta}\right)}{\left[\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)\right]^{2}} \\R=\frac{\sum_{n=1}^{M} \beta_{n} t_{n}\left(y_{n}-\bar{y}\right)}{\sum_{n=1}^{M} \alpha_{n}\left(y_{n}-\bar{y}\right)}-\frac{\sum_{n=1}^{M} t_{n} \beta_{n}\left(\alpha_{n}-\bar{\alpha}\right)}{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)} \\S=\frac{\sum_{n=1}^{M} \beta_{n}\left(y_{n}-\bar{y}\right)}{\sum_{n=1}^{M} \alpha_{n}\left(y_{n}-\bar{y}\right)}-\frac{\sum_{n=1}^{M} \beta_{n}\left(\alpha_{n}-\bar{\alpha}\right)}{\sum_{n=1}^{M} \alpha_{n}\left(\alpha_{n}-\bar{\alpha}\right)} \\\bar{y}=\frac{1}{M} \sum_{n=1}^{M} y_{n} \\\bar{\alpha}=\frac{1}{M} \sum_{n=1}^{M} \alpha_{n} \\\bar{\beta}=\frac{1}{M} \sum_{n=1}^{M} \beta_{n} \\\alpha_{n}=\cos \left(\omega t_{n}+\theta\right) \\\beta_{n}=\sin \left(\omega t_{n}+\theta\right) \\\end{array}
a11=[∑n=1Mαn(αn−αˉ)]2∑n=1Mβntn(αn−αˉ)∑n=1Mαntn(βn−βˉ)−[∑n=1Mαn(αn−αˉ)]2∑n=1Mαn(αn−αˉ)∑n=1Mβntn2(βn−βˉ)a12=[∑n=1Mαn(αn−αˉ)]2∑n=1Mβntn(αn−αˉ)∑n=1Mαn(βn−βˉ)−[∑n=1Mαn(αn−αˉ)]2∑n=1Mαn(αn−αˉ)∑n=1Mβntn(βn−βˉ)a21=[∑n=1Mαn(αn−αˉ)]2∑n=1Mβn(αn−αˉ)∑n=1Mαntn(βn−βˉ)−[∑n=1Mαn(αn−αˉ)]2∑n=1Mαn(αn−αˉ)∑n=1Mβntn(βn−βˉ)a22=[∑n=1Mαn(αn−αˉ)]2∑n=1Mβn(αn−αˉ)∑n=1Mαn(βn−βˉ)−[∑n=1Mαn(αn−αˉ)]2∑n=1Mαn(αn−αˉ)∑n=1Mβn(βn−βˉ)R=∑n=1Mαn(yn−yˉ)∑n=1Mβntn(yn−yˉ)−∑n=1Mαn(αn−αˉ)∑n=1Mtnβn(αn−αˉ)S=∑n=1Mαn(yn−yˉ)∑n=1Mβn(yn−yˉ)−∑n=1Mαn(αn−αˉ)∑n=1Mβn(αn−αˉ)yˉ=M1∑n=1Mynαˉ=M1∑n=1Mαnβˉ=M1∑n=1Mβnαn=cos(ωtn+θ)βn=sin(ωtn+θ)
使用
Ψ
\Psi
Ψ和
ϕ
\phi
ϕ作为新的
ω
\omega
ω和
θ
\theta
θ估计值,重复上述过程,直到两者的差别小到满足要求,产生其拟合函数的形式如下:
y
′
n
=
A
cos
(
Ψ
t
n
+
ϕ
)
+
C
y^{\prime}{ }_{n}=A \cos \left(\Psi t_{n}+\phi\right)+C
y′n=Acos(Ψtn+ϕ)+C
可按下列式子计算
A
=
∑
n
=
1
M
β
n
(
y
n
−
y
ˉ
)
(
α
n
+
β
n
+
β
n
t
n
)
∑
n
=
1
M
(
α
n
−
α
¨
)
(
α
n
+
β
n
+
β
n
t
n
)
C
=
y
ˉ
−
A
α
ˉ
\begin{aligned}A & =\frac{\sum_{n=1}^{M} \beta_{n}\left(y_{n}-\bar{y}\right)\left(\alpha_{n}+\beta_{n}+\beta_{n} t_{n}\right)}{\sum_{n=1}^{M}\left(\alpha_{n}-\ddot{\alpha}\right)\left(\alpha_{n}+\beta_{n}+\beta_{n} t_{n}\right)} \\C & =\bar{y}-A \bar{\alpha}\end{aligned}
AC=∑n=1M(αn−α¨)(αn+βn+βntn)∑n=1Mβn(yn−yˉ)(αn+βn+βntn)=yˉ−Aαˉ
残差有效值为
(
ϵ
M
)
1
2
(\frac{\epsilon}{M})^{\frac{1}{2}}
(Mϵ)21,这里
ε
M
=
1
M
∑
n
=
1
M
y
n
2
+
A
2
M
∑
n
=
1
M
α
n
2
−
2
A
M
∑
n
=
1
M
α
n
y
n
+
C
2
−
2
C
y
ˉ
+
2
A
C
α
ˉ
=
1
M
∑
n
=
1
M
(
y
n
−
A
x
n
−
C
)
2
=
1
M
∑
n
=
1
M
(
y
n
−
y
n
′
)
2
\begin{aligned}\frac{\varepsilon}{M} & =\frac{1}{M} \sum_{n=1}^{M} y_{n}^{2}+\frac{A^{2}}{M} \sum_{n=1}^{M} \alpha_{n}^{2}-2 \frac{A}{M} \sum_{n=1}^{M} \alpha_{n} y_{n}+C^{2}-2 C\bar{y}+2 A C\bar{\alpha} \\& =\frac{1}{M} \sum_{n=1}^{M}\left(y_{n}-A x_{n}-C\right)^{2}=\frac{1}{M} \sum_{n=1}^{M}\left(y_{n}-y_{n}^{\prime}\right)^{2}\end{aligned}
Mε=M1n=1∑Myn2+MA2n=1∑Mαn2−2MAn=1∑Mαnyn+C2−2Cyˉ+2ACαˉ=M1n=1∑M(yn−Axn−C)2=M1n=1∑M(yn−yn′)2
由于这是一个迭代过程,所以对一些误差很大的估计初始值
ω
\omega
ω和
θ
\theta
θ有可能引起发散。