在Sanathanan–Koerner算法中:
H ~ ( s ) = n ( s ) d ( s ) = ∑ n = 0 n ˉ a n s n ∑ n = 0 n ˉ b n s n \widetilde{H}(s)=\frac{n(s)}{d(s)}=\frac{\sum_{n=0}^{\bar{n}}a_ns^n}{\sum_{n=0}^{\bar{n}}b_ns^n} H (s)=d(s)n(s)=∑n=0nˉbnsn∑n=0nˉansn
求解数值逼近时的误差项:
( e S K ( i ) ) 2 = 1 k ˉ ∑ k = 1 k ˉ ∣ H k ∑ n = 0 n ˉ b n ( i ) ( j ω k ) n − ∑ n = 0 n ˉ a n ( i ) ( j ω k ) n ∑ n = 0 n ˉ b n ( i − 1 ) ( j ω k ) n ∣ 2 \left(e_{SK}^{(i)}\right)^{2}=\frac{1}{\bar{k}}\sum_{k=1}^{\bar{k}}\left|\frac{H_{k}\sum_{n=0}^{\bar{n}}b_{n}^{(i)}(j\omega_{k})^{n}-\sum_{n=0}^{\bar{n}}a_{n}^{(i)}(j\omega_{k})^{n}}{\sum_{n=0}^{\bar{n}}b_{n}^{(i-1)}(j\omega_{k})^{n}}\right|^{2} (eSK(i))2=kˉ1k=1∑kˉ ∑n=0nˉbn(i−1)(jωk)nHk∑n=0nˉbn(i)(jωk)n−∑n=0nˉan(i)(jωk)n 2
会包含频率的多次项,求解的最小二乘问题的矩阵将包含 Vandermonde 块,导致恶化的条件,会增加数值的不稳定性,当条件数变大时,计算结果对输入数据的微小变化会变得非常敏感,可能导致数值解不准确甚至不收敛。
为了解决上述的问题,VF算法用部分分式替代之前的传递函数的表达式
H ~ ( s ) = n ( s ) d ( s ) = ∑ n = 0 n ˉ a n s n ∑ n = 0 n ˉ b n s n \widetilde{H}(s)=\frac{n(s)}{d(s)}=\frac{\sum_{n=0}^{\bar{n}}a_ns^n}{\sum_{n=0}^{\bar{n}}b_ns^n} H (s)=d(s)n(s)=∑n=0nˉbnsn∑n=0nˉansn
将 H ~ ( s ) \widetilde{H}(s) H (s)的分子和分母项分别写作:
n ( i ) = c 0 ( i ) + ∑ n = 1 n c n ( i ) s − p n ( 0 ) (1.10) n^{(i)} = c_0^{(i)} + \sum_{n=1}^{n} \frac{c_n^{(i)}}{s - p_n^{(0)}} \tag{1.10} n(i)=c0(i)+n=1∑ns−pn(0)cn(i)(1.10)
d ( i ) = 1 + ∑ n = 1 n d n ( i ) s − p n ( 0 ) (1.11) d^{(i)} = 1 + \sum_{n=1}^{n} \frac{d_n^{(i)}}{s - p_n^{(0)}} \tag{1.11} d(i)=1+n=1∑ns−pn(0)dn(i)(1.11)
其中:
- n ( i ) n^{(i)} n(i)和 d ( i ) d^{(i)} d(i) 分别表示分子和分母多项式。
- c 0 ( i ) c_0^{(i)} c0(i)和 c n ( i ) c_n^{(i)} cn(i)是分子多项式的系数。
- d n ( i ) d_n^{(i)} dn(i)是分母多项式的系数。
- p n ( 0 ) p_n^{(0)} pn(0)表示初始极点,与变量 s s s一起出现在分式中。
这里提到的初始极点 p n ( 0 ) ∈ C p^{(0)}_n \in \mathbb{C} pn(0)∈C是一组复数,将在后续讨论它们的选取方式。可以看到,在公式 (1.11) 中,常数项已标准化为 1,这是不失一般性的处理。与 Sanathanan-Koerner 迭代中使用的幂函数基 s n s^n sn相比,分式 1 s − p n ( 0 ) \frac{1}{s - p^{(0)}_n} s−pn(0)1的变化在 s s s增加时更加受控。如果选择合适的极点 p n ( 0 ) p^{(0)}_n pn(0),则分式形式在频率上的变化更加平缓。此特性可改善条件数,特别是在极点 p n ( 0 ) p^{(0)}_n pn(0)彼此不同且分布较开时,效果更显著。
将(1.10)和(1.11)代入之前的误差表达式(1.9):
( e S K ( i ) ) 2 = 1 k ∑ k = 1 k ∣ H k ∑ n = 0 n b n ( i ) ( j ω k ) n − ∑ n = 0 n a n ( i ) ( j ω k ) n ( ∑ n = 0 n b n ( i − 1 ) ( j ω k ) n ) 2 ∣ 2 (e_{SK}^{(i)})^2 = \frac{1}{k} \sum_{k=1}^{k} \left| \frac{H_k \sum_{n=0}^{n} b_n^{(i)} (\text{j}\omega_k)^n - \sum_{n=0}^{n} a_n^{(i)} (\text{j}\omega_k)^n} { \left( \sum_{n=0}^{n} b_n^{(i-1)} (\text{j}\omega_k)^n \right)^2}\right|^2 (eSK(i))2=k1k=1∑k (∑n=0nbn(i−1)(jωk)n)2Hk∑n=0nbn(i)(jωk)n−∑n=0nan(i)(jωk)n 2
可以得到改写以后的误差表达式为:
e S K ( i ) = 1 k ∑ k = 1 k ∣ H k d ( i ) ( j ω k ) d ( i − 1 ) ( j ω k ) − n ( i ) ( j ω k ) d ( i − 1 ) ( j ω k ) ∣ 2 (1.12) e_{SK}^{(i)} = \frac{1}{k} \sum_{k=1}^{k} \left| \frac{H_k d^{(i)}(j \omega_k)}{d^{(i-1)}(j \omega_k)} - \frac{n^{(i)}(j \omega_k)}{d^{(i-1)}(j \omega_k)} \right|^2 \tag {1.12} eSK(i)=k1k=1∑k d(i−1)(jωk)Hkd(i)(jωk)−d(i−1)(jωk)n(i)(jωk) 2(1.12)
对该公式的分解说明如下:
- e S K ( i ) e_{SK}^{(i)} eSK(i) 表示第 i i i 次迭代的误差项。
- H k H_k Hk 和 n ( i ) ( j ω k ) n^{(i)}(j \omega_k) n(i)(jωk) 可能表示在离散频率 j ω k j \omega_k jωk 下的频率相关项或传递函数。
- d ( i ) ( j ω k ) d^{(i)}(j \omega_k) d(i)(jωk) 和 d ( i − 1 ) ( j ω k ) d^{(i-1)}(j \omega_k) d(i−1)(jωk) 表示分母中的项。
引入了两个新量,令:
-
w ( i ) ( s ) w^{(i)}(s) w(i)(s):
w ( i ) ( s ) = d ( i ) ( s ) d ( i − 1 ) ( s ) (1.13) w^{(i)}(s) = \frac{d^{(i)}(s)}{d^{(i-1)}(s)} \tag{1.13} w(i)(s)=d(i−1)(s)d(i)(s)(1.13) -
H ~ ( i ) ( s ) \tilde{H}^{(i)}(s) H~(i)(s):
H ~ ( i ) ( s ) = n ( i ) ( s ) d ( i − 1 ) ( s ) (1.14) \tilde{H}^{(i)}(s) = \frac{n^{(i)}(s)}{d^{(i-1)}(s)} \tag{1.14} H~(i)(s)=d(i−1)(s)n(i)(s)(1.14)
将其代入1.12得到:
( e S K ( i ) ) 2 = 1 k ∑ k = 1 k ∣ H k w ( i ) ( j ω k ) − H ~ ( i ) ( j ω k ) ∣ 2 . (e_{SK}^{(i)})^2 = \frac{1}{k} \sum_{k=1}^{k} \left| H_k w^{(i)}(j \omega_k) - \tilde{H}^{(i)}(j \omega_k) \right|^2. (eSK(i))2=k1k=1∑k Hkw(i)(jωk)−H~(i)(jωk) 2.
函数 H ~ ( i ) ( s ) \tilde{H}^{(i)}(s) H~(i)(s) 可以解释为通过最小化公式 (1.12) 在第 i i i 次迭代时估计的模型传递函数。具体来说,这个传递函数由当前迭代的分子 n ( i ) ( s ) n^{(i)}(s) n(i)(s)(待确定)和前一迭代的分母 d ( i − 1 ) ( s ) d^{(i-1)}(s) d(i−1)(s)(已知)构成。由于误差函数的线性化,此近似方法有效地避免了分母中未知量的存在。
函数 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 可以理解为一个频率相关的权重,用来乘以给定的样本 H k H_k Hk。
加权函数 w ( i ) ( s ) w^{(i)}(s) w(i)(s)有两个主要目的:
- 提供分母 d ( i ) ( s ) d^{(i)}(s) d(i)(s)的新估计,
- 补偿通过将 H ~ ( i ) ( s ) \tilde{H}^{(i)}(s) H~(i)(s)的分母固定为前一次迭代值而引入的近似误差。实际上,权重 w ( i ) ( s ) w^{(i)}(s) w(i)(s)依赖于新分母估计 d ( i ) ( s ) d^{(i)}(s) d(i)(s)与前一次估计 d ( i − 1 ) ( s ) d^{(i-1)}(s) d(i−1)(s)的比值。
将 d ( i ) d^{(i)} d(i)和 d ( i − 1 ) d^{(i-1)} d(i−1)的表达式代入权重 w ( i ) ( s ) w^{(i)}(s) w(i)(s)的表达式得到:
w ( i ) ( s ) = 1 + ∑ n = 1 N d n ( i ) s − p n ( 0 ) 1 + ∑ n = 1 N d n ( i − 1 ) s − p n ( 0 ) (1.15a) w^{(i)}(s) = \frac{1 + \sum_{n=1}^{N} \frac{d^{(i)}_n}{s - p^{(0)}_n}}{1 + \sum_{n=1}^{N} \frac{d^{(i-1)}_n}{s - p^{(0)}_n}} \tag{1.15a} w(i)(s)=1+∑n=1Ns−pn(0)dn(i−1)1+∑n=1Ns−pn(0)dn(i)(1.15a)
-
分子部分:
1 + ∑ n = 1 N d n ( i ) s − p n ( 0 ) 1 + \sum_{n=1}^{N} \frac{d^{(i)}_n}{s - p^{(0)}_n} 1+n=1∑Ns−pn(0)dn(i)
可以看作一个分式展开的形式,对应于某个分母为 ∏ n = 1 N ( s − p n ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) ∏n=1N(s−pn(0)) 的多项式。 -
分母部分:
1 + ∑ n = 1 N d n ( i − 1 ) s − p n ( 0 ) 1 + \sum_{n=1}^{N} \frac{d^{(i-1)}_n}{s - p^{(0)}_n} 1+n=1∑Ns−pn(0)dn(i−1)
同样可以看作另一个分式展开形式,对应于某个分母为 ∏ n = 1 N ( s − p n ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) ∏n=1N(s−pn(0)) 的多项式。
我们需要将分式的加法和乘积展开为分母和分子的一般形式,从而得到目标式的等价关系。
-
分子部分的通分:
1 + ∑ n = 1 N d n ( i ) s − p n ( 0 ) 1 + \sum_{n=1}^{N} \frac{d^{(i)}_n}{s - p^{(0)}_n} 1+n=1∑Ns−pn(0)dn(i)
通分后分母为 ∏ n = 1 N ( s − p n ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) ∏n=1N(s−pn(0)),因此分子为:
∏ n = 1 N ( s − p n ( 0 ) ) + ∑ n = 1 N d n ( i ) ∏ m ≠ n ( s − p m ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) + \sum_{n=1}^{N} d^{(i)}_n \prod_{m \neq n} (s - p^{(0)}_m) n=1∏N(s−pn(0))+n=1∑Ndn(i)m=n∏(s−pm(0)) -
分母部分的通分:
1 + ∑ n = 1 N d n ( i − 1 ) s − p n ( 0 ) 1 + \sum_{n=1}^{N} \frac{d^{(i-1)}_n}{s - p^{(0)}_n} 1+n=1∑Ns−pn(0)dn(i−1)
通分后分母同样为 ∏ n = 1 N ( s − p n ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) ∏n=1N(s−pn(0)),因此分子为:
∏ n = 1 N ( s − p n ( 0 ) ) + ∑ n = 1 N d n ( i − 1 ) ∏ m ≠ n ( s − p m ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) + \sum_{n=1}^{N} d^{(i-1)}_n \prod_{m \neq n} (s - p^{(0)}_m) n=1∏N(s−pn(0))+n=1∑Ndn(i−1)m=n∏(s−pm(0)) -
将上面两式带入原始表达式:
w ( i ) ( s ) = ∏ n = 1 N ( s − p n ( 0 ) ) + ∑ n = 1 N d n ( i ) ∏ m ≠ n ( s − p m ( 0 ) ) ∏ n = 1 N ( s − p n ( 0 ) ) + ∑ n = 1 N d n ( i − 1 ) ∏ m ≠ n ( s − p m ( 0 ) ) w^{(i)}(s) = \frac{\prod_{n=1}^{N} (s - p^{(0)}_n) + \sum_{n=1}^{N} d^{(i)}_n \prod_{m \neq n} (s - p^{(0)}_m)}{\prod_{n=1}^{N} (s - p^{(0)}_n) + \sum_{n=1}^{N} d^{(i-1)}_n \prod_{m \neq n} (s - p^{(0)}_m)} w(i)(s)=∏n=1N(s−pn(0))+∑n=1Ndn(i−1)∏m=n(s−pm(0))∏n=1N(s−pn(0))+∑n=1Ndn(i)∏m=n(s−pm(0)) -
分子的多项式形式可以表示为新的形式:
∏ n = 1 N ( s − p n ( i ) ) \prod_{n=1}^{N} (s - p^{(i)}_n) n=1∏N(s−pn(i))
其中 p n ( i ) p^{(i)}_n pn(i) 表示多项式的根,由迭代过程中 d n ( i ) d^{(i)}_n dn(i) 的值确定。 -
分母的多项式形式可以表示为:
∏ n = 1 N ( s − p n ( i − 1 ) ) \prod_{n=1}^{N} (s - p^{(i-1)}_n) n=1∏N(s−pn(i−1))
其中 p n ( i − 1 ) p^{(i-1)}_n pn(i−1) 表示多项式的根,由迭代过程中 d n ( i − 1 ) d^{(i-1)}_n dn(i−1) 的值确定。
因此,可以直接将分子和分母重新组合为目标形式:
w ( i ) ( s ) = ∏ n = 1 N ( s − p n ( i ) ) ∏ n = 1 N ( s − p n ( 0 ) ) ∏ n = 1 N ( s − p n ( i − 1 ) ) ∏ n = 1 N ( s − p n ( 0 ) ) w^{(i)}(s) = \frac{\frac{\prod_{n=1}^{N} (s - p^{(i)}_n)}{\prod_{n=1}^{N} (s - p^{(0)}_n)}}{\frac{\prod_{n=1}^{N} (s - p^{(i-1)}_n)}{\prod_{n=1}^{N} (s - p^{(0)}_n)}} w(i)(s)=∏n=1N(s−pn(0))∏n=1N(s−pn(i−1))∏n=1N(s−pn(0))∏n=1N(s−pn(i))
分子分母的公共项 ∏ n = 1 N ( s − p n ( 0 ) ) \prod_{n=1}^{N} (s - p^{(0)}_n) ∏n=1N(s−pn(0)) 相互抵消,最终得到:
w ( i ) ( s ) = ∏ n = 1 N ( s − p n ( i ) ) ∏ n = 1 N ( s − p n ( i − 1 ) ) (1.15b) w^{(i)}(s) = \frac{\prod_{n=1}^{N} (s - p^{(i)}_n)}{\prod_{n=1}^{N} (s - p^{(i-1)}_n)} \tag{1.15b} w(i)(s)=∏n=1N(s−pn(i−1))∏n=1N(s−pn(i))(1.15b)
这个表达式也可以写作极点和残差的形式:
w ( i ) ( s ) = 1 + ∑ n = 1 N w n ( i ) 1 s − p n ( i − 1 ) (1.15c) w^{(i)}(s) =1 + \sum_{n=1}^{N} w^{(i)}_n \frac{1}{s - p^{(i-1)}_n} \tag{1.15c} w(i)(s)=1+n=1∑Nwn(i)s−pn(i−1)1(1.15c)
在上述表达式中, w ( i ) ( s ) w^{(i)}(s) w(i)(s) 和 w n ( i ) w^{(i)}_n wn(i) 表示不同的量,具体区别如下:
-
w ( i ) ( s ) w^{(i)}(s) w(i)(s):
w ( i ) ( s ) w^{(i)}(s) w(i)(s) 是一个关于变量 s s s 的函数。它表示在第 i i i 次迭代时的整个权重函数,用于在模型拟合中调整传递函数的误差。 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 是一个复变量的函数,其形式为:w ( i ) ( s ) = 1 + ∑ n = 1 N w n ( i ) 1 s − p n ( i − 1 ) w^{(i)}(s) = 1 + \sum_{n=1}^{N} w^{(i)}_n \frac{1}{s - p^{(i-1)}_n} w(i)(s)=1+n=1∑Nwn(i)s−pn(i−1)1
这个表达式表明 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 是通过每个 w n ( i ) w^{(i)}_n wn(i) 和分量 1 s − p n ( i − 1 ) \frac{1}{s - p^{(i-1)}_n} s−pn(i−1)1 的线性组合构成的。
-
w n ( i ) w^{(i)}_n wn(i):
w n ( i ) w^{(i)}_n wn(i) 是 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 中的单个权重系数,不依赖于 s s s。它表示每个分量 1 s − p n ( i − 1 ) \frac{1}{s - p^{(i-1)}_n} s−pn(i−1)1 的权重。换句话说, w n ( i ) w^{(i)}_n wn(i) 控制了第 i i i 次迭代中第 n n n 个极点 p n ( i − 1 ) p^{(i-1)}_n pn(i−1) 对权重函数 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 的影响大小。
总结来说, w ( i ) ( s ) w^{(i)}(s) w(i)(s) 是完整的权重函数,而 w n ( i ) w^{(i)}_n wn(i) 是该权重函数中各个项的权重系数。
在公式 (1.15b) 中, p n ( i ) p_n^{(i)} pn(i)是 d ( i ) ( s ) d^{(i)}(s) d(i)(s)的零点,因此也是 H ~ ( i + 1 ) ( s ) \tilde{H}^{(i+1)}(s) H~(i+1)(s)的极点。我们将 w ( i ) ( s ) w^{(i)}(s) w(i)(s) 表达为一组新的极点 p n ( i − 1 ) p_n^{(i-1)} pn(i−1) 的形式,这些极点会在每次迭代中发生变化,如 (1.15c) 的表达式所示。
对 H ~ ( i ) ( s ) \tilde{H}^{(i)}(s) H~(i)(s) 也可以进行相同的操作,最终得到:
H ~ ( i ) ( s ) = c 0 ( i ) + ∑ n = 1 n ˉ c n ( i ) s − p n ( 0 ) 1 + ∑ n = 1 n ˉ d n ( i − 1 ) s − p n ( 0 ) = r 0 ( i ) + ∑ n = 1 n ˉ r n ( i ) s − p n ( i − 1 ) . (1.16) \tilde{H}^{(i)}(s) = \frac{c_0^{(i)} + \sum_{n=1}^{\bar{n}} \frac{c_n^{(i)}}{s - p_n^{(0)}}}{1 + \sum_{n=1}^{\bar{n}} \frac{d_n^{(i-1)}}{s - p_n^{(0)}}} = r_0^{(i)} + \sum_{n=1}^{\bar{n}} \frac{r_n^{(i)}}{s - p_n^{(i-1)}}. \tag{1.16} H~(i)(s)=1+∑n=1nˉs−pn(0)dn(i−1)c0(i)+∑n=1nˉs−pn(0)cn(i)=r0(i)+n=1∑nˉs−pn(i−1)rn(i).(1.16)
将新的权重函数的表达式和传递函数的表达式代入,可以得到优化后的误差表达式误差函数 ( e S K ( i ) ) 2 (e_{SK}^{(i)})^2 (eSK(i))2 表示为:
( e S K ( i ) ) 2 = 1 k ∑ k = 1 K ∣ H k ( 1 + ∑ n = 1 n w n ( i ) j ω k − p n ( i − 1 ) ) − ( r 0 ( i ) + ∑ n = 1 n r n ( i ) j ω k − p n ( i − 1 ) ) ∣ 2 ( 1.17 ) (e_{SK}^{(i)})^2 = \frac{1}{k} \sum_{k=1}^{K} \left| H_k \left( 1 + \sum_{n=1}^{n} \frac{w_n^{(i)}}{\text{j} \omega_k - p_n^{(i-1)}} \right) - \left( r_0^{(i)} + \sum_{n=1}^{n} \frac{r_n^{(i)}}{\text{j} \omega_k - p_n^{(i-1)}} \right) \right|^2 {(1.17)} (eSK(i))2=k1k=1∑K Hk(1+n=1∑njωk−pn(i−1)wn(i))−(r0(i)+n=1∑njωk−pn(i−1)rn(i)) 2(1.17)
这是矢量拟合(VF)中实际使用的误差函数,用于将模型拟合到给定的样本数据上。公式 (1.17) 和 (1.9) 的主要区别在于线性化误差如何通过迭代加权逐步收敛到公式 (1.6)。
在公式 (1.12) 中,权重 1 d ( i − 1 ) ( j ω k ) \frac{1}{d^{(i-1)}(j\omega_k)} d(i−1)(jωk)1 被显式地应用,但这种方法会降低数值条件的稳定性。
而在公式 (1.17) 中,相同的权重通过在每次迭代中重新定位极点 p n ( i − 1 ) p_n^{(i-1)} pn(i−1) 的方式被隐式地应用。
一旦公式 (1.17) 被最小化后,可以通过 d ( i ) ( s ) d^{(i)}(s) d(i)(s) 的零点来找到下一次迭代的更新极点 p n ( i ) p_n^{(i)} pn(i),正如从公式 (1.15c) 表达式中可以看出的那样。可以证明,这些零点可以通过一个矩阵的特征值来计算:
{ p n ( i ) } = eig ( A ( i − 1 ) − b w ( c w ( i ) ) T ) , (1.18) \{p_n^{(i)}\} = \text{eig}(A^{(i-1)} - b_w (c_w^{(i)})^T), \tag{1.18} {pn(i)}=eig(A(i−1)−bw(cw(i))T),(1.18)
其中:
- A ( i − 1 ) = diag { p 1 ( i − 1 ) , … , p n ( i − 1 ) } A^{(i-1)} = \text{diag}\{p_1^{(i-1)}, \dots, p_n^{(i-1)}\} A(i−1)=diag{p1(i−1),…,pn(i−1)}是一个对角矩阵,由前一次迭代的极点 p n ( i − 1 ) p_n^{(i-1)} pn(i−1) 构成;
- b w b_w bw 是一个 n × 1 n \times 1 n×1 的全 1 向量;
- ( c w ( i ) ) T = [ w 1 ( i ) , … , w n ( i ) ] (c_w^{(i)})^T = [w_1^{(i)}, \dots, w_n^{(i)}] (cw(i))T=[w1(i),…,wn(i)] 是权重系数的转置向量。
在收敛时, p n ( i − 1 ) → p n ( i ) p_n^{(i-1)} \to p_n^{(i)} pn(i−1)→pn(i),它们成为所得到模型 H ( i ) ( s ) H^{(i)}(s) H(i)(s)的极点。当这种情况发生时,根据公式 (1.15c) 表达式,可以看到 w ( i ) → 1 w^{(i)} \to 1 w(i)→1。同时,线性化误差 (1.12) 逐渐收敛到 (1.6),达到了目标。