当前位置:   article > 正文

基于多相滤波器的数字信道化算法详解_基于多相滤波的信道化

基于多相滤波的信道化

基于多相滤波器的数字信道化算法详解

  • 推导过程
  • 总结
  • 仿真

本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出.
此外, 进入我的Github仓库polyphase , 可查看基于多相滤波器的数字信道化算法的Python代码实现; Matlab代码可从我的资源中下载. 感兴趣的小伙伴可以下载使用, 希望对大家有所帮助.

推导过程

多相滤波信道化是对传统信道化结构的改进, 通过各支路共用一个低通滤波器提高资源的利用率, 同时采用多相抽取提高了后续滤波和 FFT 的运算效率. 给定输入信号为 x ( n ) x(n) x(n), 欲划分的信道数为 K K K, 原型滤波器 h ( n ) h(n) h(n)
的阶数为 N N N, 且滤波器阶数能被信道数整除, 即 L = N / K L = N / K L=N/K, 则原型滤波器的系统函数 H ( z ) H(z) H(z)可表示为:

H ( z ) = ∑ n = 0 N − 1 h ( n ) z − n = h 0 z − 0 + h K z − K + . . . + h ( L − 1 ) K z − ( L − 1 ) K + h 1 z − 1 + h K + 1 z − ( K + 1 ) + . . . + h ( L − 1 ) K + 1 z − [ ( L − 1 ) K + 1 ] . . . + h K − 1 z − ( K − 1 ) + h 2 K − 1 z − ( 2 K − 1 ) + . . . + h L K − 1 z − ( L K − 1 ) = z − 0 ( h 0 + h K z − K + . . . + h ( L − 1 ) K z − ( L − 1 ) K ) + z − 1 ( h 1 + h K + 1 z − K + . . . + h ( L − 1 ) K + 1 z − ( L − 1 ) K ) . . . + z − ( K − 1 ) ( h K − 1 + h 2 K − 1 z − K + . . . + h L K − 1 z − ( L − 1 ) K ) = ∑ k = 0 K − 1 ( z − k ∑ l = 0 L − 1 h l K + k z − l K ) (1) H(z) = \sum_{n = 0}^{N-1}h(n)z^{-n} \\ = h_0z^{-0} + h_Kz^{-K} + ... + h_{(L-1)K}z^{-(L-1)K} \\ + h_1z^{-1} + h_{K+1}z^{-(K+1)} + ... + h_{(L-1)K + 1}z^{-[(L-1)K+1]} \\ ... \\ + h_{K-1}z^{-(K-1)} + h_{2K-1}z^{-(2K-1)} + ... + h_{LK-1}z^{-(LK-1)} \\ = z^{-0}(h_0 + h_Kz^{-K} + ... + h_{(L-1)K}z^{-(L-1)K}) \\ + z^{-1}(h_1 + h_{K+1}z^{-K} + ... + h_{(L-1)K + 1}z^{-(L-1)K}) \\ ... \\ + z^{-(K-1)}(h_{K-1} + h_{2K-1}z^{-K} + ... + h_{LK-1}z^{-(L-1)K}) \\ = \sum_{k = 0}^{K-1}(z^{-k}\sum_{l=0}^{L-1}h_{lK+k}z^{-lK}) \tag{1} H(z)=n=0N1h(n)zn=h0z0+hKzK+...+h(L1)Kz(L1)K+h1z1+hK+1z(K+1)+...+h(L1)K+1z[(L1)K+1]...+hK1z(K1)+h2K1z(2K1)+...+hLK1z(LK1)=z0(h0+hKzK+...+h(L1)Kz(L1)K)+z1(h1+hK+1zK+...+h(L1)K+1z(L1)K)...+z(K1)(hK1+h2K1zK+...+hLK1z(L1)K)=k=0K1(zkl=0L1hlK+kzlK)(1)

e r ( l ) = h ( l K + r ) e_r(l)=h(lK+r) er(l)=h(lK+r)为原型滤波器 h ( n ) h(n) h(n)的多相分量, 则

E r ( z ) = ∑ l = 0 L − 1 e r ( l ) z − l = ∑ l = 0 L − 1 h ( l K + r ) z − l (2) E_r(z) = \sum_{l=0}^{L-1}e_r(l)z^{-l}=\sum_{l=0}^{L-1}h(lK+r)z^{-l} \tag{2} Er(z)=l=0L1er(l)zl=l=0L1h(lK+r)zl(2)

那么 H ( z ) H(z) H(z)可表示为

H ( z ) = ∑ r = 0 K − 1 ( E r ( z K ) z − r (3) H(z) = \sum_{r = 0}^{K-1}(E_r(z^K)z^{-r} \tag{3} H(z)=r=0K1(Er(zK)zr(3)

传统数字信道化结构中, 第 k k k路信道的实现框图如下图所示. 信号经过滤波后, 与复指数信号 e − 2 j π k n / K e^{-2j\pi kn/K} e2jπkn/K相乘, 实现正交下变频到基带信号. 其中, 滤波器 h k ( n ) h_k(n) hk(n)的系统函数 H k ( z ) H_k(z) Hk(z)可表示为 h k ( n ) = h 0 ( n ) e 2 j π k n / K h_k(n)=h_0(n)e^{2j\pi kn/K} hk(n)=h0(n)e2jπkn/K, h 0 ( n ) h_0(n) h0(n)为低通原型滤波器.

在这里插入图片描述
w k = − 2 π k / K w_k = -2\pi k/K wk=2πk/K,则复数乘法器的输出 v k ( n ) v_k(n) vk(n)可表示为

v k ( n ) = [ x ( n ) ∗ h k ( n ) ] e j w k n = ∑ i = 0 N − 1 x ( n − i ) [ h 0 ( i ) e − j w k i ] e j w k n = ∑ i = 0 N − 1 x ( n − i ) [ h 0 ( i ) e j w k ( n − i ) ] (4) v_k(n) = [x(n) * h_k(n)]e^{jw_kn} \\ = \sum_{i=0}^{N-1}x(n-i)[h_0(i)e^{-jw_ki}]e^{jw_kn} \\ = \sum_{i=0}^{N-1}x(n-i)[h_0(i)e^{jw_k(n-i)}] \tag{4} vk(n)=[x(n)hk(n)]ejwkn=i=0N1x(ni)[h0(i)ejwki]ejwkn=i=0N1x(ni)[h0(i)ejwk(ni)](4)

∗ * : 卷积符号, 下同.

k k k路的输出 y k ( m ) y_k(m) yk(m)

y k ( m ) = v k ( n ) ∣ n = K m = ∑ i = 0 N − 1 x ( K m − i ) [ h 0 ( i ) e j w k ( K m − i ) ] (5) y_k(m) = v_k(n)|_{n=Km} = \sum_{i=0}^{N-1}x(Km-i)[h_0(i)e^{jw_k(Km-i)}] \tag{5} yk(m)=vk(n)n=Km=i=0N1x(Kmi)[h0(i)ejwk(Kmi)](5)

i = l K + r i = lK+r i=lK+r, 则上式可表示为

y k ( m ) = ∑ r = 0 K − 1 ∑ l = 0 L − 1 x ( K m − K l − r ) h 0 ( K l + r ) e j w k ( K m − K l − r ) (6) y_k(m) = \sum_{r=0}^{K-1}\sum_{l=0}^{L-1}x(Km-Kl-r)h_0(Kl+r)e^{jw_k(Km-Kl-r)} \tag{6} yk(m)=r=0K1l=0L1x(KmKlr)h0(Kl+r)ejwk(KmKlr)(6)

x r ( m − l ) = x ( K ( m − l ) − r ) x_r(m-l) = x(K(m-l)-r) xr(ml)=x(K(ml)r), 结合原型滤波器 h ( n ) h(n) h(n)的多相分量 e r ( l ) = h ( K l + r ) e_r(l)=h(Kl+r) er(l)=h(Kl+r), 上式可表示为

y k ( m ) = ∑ r = 0 K − 1 ∑ l = 0 L − 1 x r ( m − l ) e r ( l ) e j w k ( K m − K l − r ) = ∑ r = 0 K − 1 e − j w k r ∑ l = 0 L − 1 x r ( m − l ) e r ( l ) e j w k K ( m − l ) (7) y_k(m) = \sum_{r=0}^{K-1}\sum_{l=0}^{L-1}x_r(m-l)e_r(l)e^{jw_k(Km-Kl-r)} \\ = \sum_{r=0}^{K-1}e^{-jw_kr} \sum_{l=0}^{L-1}x_r(m-l)e_r(l)e^{jw_kK(m-l)} \tag{7} yk(m)=r=0K1l=0L1xr(ml)er(l)ejwk(KmKlr)=r=0K1ejwkrl=0L1xr(ml)er(l)ejwkK(ml)(7)

K K K分别为奇数和偶数时, 信道分配采用如下图所示的方式进行排列

在这里插入图片描述
k k k 路的中心频率 w k w_k wk

w k = − π + 2 π k + π K (8) w_k = -\pi + \frac{2\pi k + \pi}{K} \tag{8} wk=π+K2πk+π(8)

将上式带入公式 (7) 得

y k ( m ) = ∑ r = 0 K − 1 e j ( π − 2 π k + π K ) r ∑ l = 0 L − 1 x r ( m − l ) e r ( l ) ( − 1 ) ( K − 1 ) ( m − l ) (9) y_k(m) = \sum_{r=0}^{K-1}e^{j(\pi-\frac{2\pi k + \pi}{K})r} \sum_{l=0}^{L-1}x_r(m-l)e_r(l)(-1)^{(K-1)(m-l)} \tag{9} yk(m)=r=0K1ej(πK2πk+π)rl=0L1xr(ml)er(l)(1)(K1)(ml)(9)

注: e − j π = − 1 e^{-j\pi} = -1 ejπ=1, x a b = ( x a ) b x^{ab} = (x^a)^b xab=(xa)b ==> e − j π ( K − 1 ) ( m − l ) = ( − 1 ) ( K − 1 ) ( m − l ) e^{-j\pi(K-1)(m-l)} = (-1)^{(K-1)(m-l)} ejπ(K1)(ml)=(1)(K1)(ml)

u r ( m ) = ∑ l = 0 L − 1 x r ( m − l ) ( − 1 ) ( K − 1 ) ( m − l ) e r ( l ) = x r ( m ) ( − 1 ) ( K − 1 ) m ∗ e r ( m ) (10) u_r(m) = \sum_{l=0}^{L-1}x_r(m-l)(-1)^{(K-1)(m-l)}e_r(l) \\ = x_r(m)(-1)^{(K-1)m}*e_r(m) \tag{10} ur(m)=l=0L1xr(ml)(1)(K1)(ml)er(l)=xr(m)(1)(K1)mer(m)(10)

代入上式得

y k ( m ) = ∑ r = 0 K − 1 u r ( m ) e j ( π − 2 π k + π K ) r = ∑ r = 0 K − 1 u r ( m ) e j π r e − j π r / K e − j ( 2 π k K ) r (11) y_k(m) = \sum_{r=0}^{K-1}u_r(m)e^{j(\pi-\frac{2\pi k + \pi}{K})r}\\ = \sum_{r=0}^{K-1}u_r(m)e^{j\pi r}e^{-j\pi r/K}e^{-j(\frac{2\pi k}{K})r} \tag{11} yk(m)=r=0K1ur(m)ej(πK2πk+π)r=r=0K1ur(m)ejπrejπr/Kej(K2πk)r(11)

N点的DFT定义为 X ( k ) = D F T [ x ( n ) ] = ∑ n = 0 N − 1 x ( n ) e − 2 j π k n / N X(k) = DFT[x(n)] = \sum_{n=0}^{N-1}x(n)e^{-2j\pi kn/N} X(k)=DFT[x(n)]=n=0N1x(n)e2jπkn/N

m i m_i mi时刻, 各个信道的输出为
Y m i ( k ) = { y 0 ( m i ) , y 1 ( m i ) , y 2 ( m i ) , . . . , y K − 1 ( m i ) } (12) Y_{m_i}(k) = \{y_0(m_i), y_1(m_i), y_2(m_i), ... ,y_{K-1}(m_i) \} \tag{12} Ymi(k)={y0(mi),y1(mi),y2(mi),...,yK1(mi)}(12)
= D F T [ u r ( m ) ( − 1 ) r e j π r / K ] ∣ m = m i = DFT[u_r(m)(-1)^re^{j\pi r/K}]|_{m=m_i} =DFT[ur(m)(1)rejπr/K]m=mi

总结

以上是多相滤波数字信道化结构的推导过程. 对推导过程总结如下:

  1. 对输入信号 x ( n ) x(n) x(n) 和滤波器系数 h 0 ( n ) h_0(n) h0(n) 进行多相分解, 即
    x k ( m ) = x ( K m + k ) (13) x_k(m) = x(Km+k) \tag{13} xk(m)=x(Km+k)(13)
    e k ( m ) = h 0 ( K m + k ) (14) e_k(m) = h_0(Km+k) \tag{14} ek(m)=h0(Km+k)(14)
  2. 对分解后的多相信号 x k ( m ) x_k(m) xk(m)乘以指数 ( − 1 ) ( K − 1 ) m (-1)^{(K-1)m} (1)(K1)m
  3. 将上一步的输出同多相滤波器系数 e k ( m ) e_k(m) ek(m) 进行卷积运算得到 u k ( m ) u_k(m) uk(m), 即

u k ( m ) = x k ( m ) ( − 1 ) ( K − 1 ) m ∗ e k ( m ) (15) u_k(m) = x_k(m)(-1)^{(K-1)m}*e_k(m) \tag{15} uk(m)=xk(m)(1)(K1)mek(m)(15)

  1. m i m_i mi 时刻多相滤波器的输出 u ( k ∣ m = m i ) = u k ( m i ) u(k|_{m=m_i}) = u_k(m_i) u(km=mi)=uk(mi) 分别乘以复指数 ( − 1 ) k e j π k / K (-1)^ke^{j\pi k/K} (1)kejπk/K, 得
    v ( k ∣ m = m i ) = u ( k ∣ m = m i ) ( − 1 ) k e j π k / K (16) v(k|_{m=m_i}) = u(k|_{m=m_i})(-1)^ke^{j\pi k/K} \tag{16} v(km=mi)=u(km=mi)(1)kejπk/K(16)
  2. 对上一步得到的 v ( k ∣ m = m i ) v(k|_{m=m_i}) v(km=mi) K K K点的 DFT 得到 m i m_i mi
    时刻的输出向量
    Y ( m i ) = D F T [ v ( k ∣ m = m i ) ] (17) Y(m_i) = DFT[v(k|_{m=m_i})] \tag{17} Y(mi)=DFT[v(km=mi)](17)

由此得到的多相滤波信道化原理结构框图如下图所示.

在这里插入图片描述

仿真

使用python对多相滤波数字信道化算法进行仿真. 代码如下:

from scipy.signal import chirp, remez
import matplotlib.pyplot as plt
# [how to install `polyphase`](https://github.com/falwat/polyphase)
from polyphase import Channelizer
from numpy import arange, real, imag
from numpy.fft import fft, fftshift

 # 通道数
channel_num = 8
# 采样率
fs = 1280000

f0 = 0
f1 = fs/2
t1 = 1


# 
T = 1

t = arange(0, int(T*fs)) / fs

# 生成一个chirp信号
s = chirp(t, f0, t1, f1)

# 创建原型滤波器
cutoff = fs / channel_num / 2    # Desired cutoff frequency, Hz
trans_width = cutoff / 10  # Width of transition from pass band to stop band, Hz
numtaps = 128      # Size of the FIR filter.
taps = remez(numtaps, [0, cutoff - trans_width, cutoff + trans_width, 0.5*fs],
                    [1, 0], Hz=fs)

# 创建信道化器    
channelizer = Channelizer(taps, channel_num)

ss = channelizer.dispatch(s)


segs = 500;
ns = int(fs/segs);
nss = int(ss.shape[1]/segs);


# 分段绘图
fig, axs = plt.subplots(3, 1)

for i in range(segs):
    s0 = s[i*ns:i*ns+ns]
    h0 = abs(fft(s0))
    ss0 = ss[0:4, i*nss:i*nss+nss]
    hh0 = abs(fftshift(fft(ss0)))
    for ax in axs:
        ax.cla()
    axs[0].set_title(r'original signal')
    axs[1].set_title(r'The spectrum of channelized signals')
    axs[2].set_title(r'Waveform of channelized signal(real part)')
    axs[0].plot(h0 / max(h0))
    axs[1].plot(abs(hh0.T / hh0.max()))
    axs[2].plot(real(ss0.T))
    plt.pause(0.05)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

仿真视频如下:

多相滤波数字信道化仿真

链接: 仿真视频

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号