采样率转换理论基础

离散信号重采样(采样率转换)通常有两种实现办法

1】一种是通过DA转换成模拟信号然后再通过AD重新对模拟信号进行采样

2】一种是通过插值的办法在对输入信号进行插值或者抽取的方式,完成纯数字域的采样率转换

本文主要记录第二种方法

首先看以下重构函数以及插值公式

g(t)=\frac{\sin (\pi t/ T)}{\pi t/ T}

y(t)=\sum _{n=-\infty}^{\infty}x(nT)g(t-nT)

取时间序列为步进为Ty,就可以得到一个重构函数序列的计算公式

g(mT_{y})=\frac{\sin (m\pi T_{y}/T)}{m\pi T_{y}/T} \qquad m=0,1,2,3...

将采样周期为Tx的输入x(nTx)序列与这个插值序列卷积,就得到了一个经过插值的序列y(mTy),插值后采样周期变为Ty,插值后输出序列的第m个元素记为以下形式:

y(mT_{y})=\sum_{n=-\infty }^{\infty}x(nT_{x})g(mT_{y}-nT_{x})\qquad m=0,1,2,3,...                                                  公式1

针对公式1,进行代码验证,代码如下

clc
clear all
close all

% 建立一个离散序列
Tx = 0.05;
T = (1:fix(1/Tx))*Tx;
x = sin(2*pi*T);
figure(1)
stem(x)
title('x')

% 验证插值函数
t = 0.002;                                   % 插值结果的分辨率,应该小于Tx,否则会出现混叠
gt = sin(pi*(t-T)./Tx)./(pi*(t-T)./Tx);     % 插值函数产生的序列

figure
plot(gt)
title('gt')

% 查看整个插值后的序列
for tloop = 1:fix(1/t)
    
    tg = tloop * t;
    gt = sin(pi*(tg-T)./Tx)./(pi*(tg-T)./Tx);
    yt(tloop) = sum(x.*gt);
    
end
figure(3)
stem(yt)
title('yt')

验证结果

假设Tx=Ty=T,我们就可以将以上公式1简化,得到一个输入信号与线性时不变系统的卷积公式

g(m)=\frac{\sin (m\pi )}{m\pi } \qquad m=0,1,2,3...

y(m)=\sum_{n=-\infty }^{\infty}x(n)g(m-n)\qquad m=0,1,2,3,...                                                                    公式2

如果Tx≠Ty,将公式1整理得到如下形式

y(mT_{y})=\sum_{n=-\infty}^{\infty}x(nT_{x})g(T_{x} (\frac{mT_{y}} {T_{x}}-n))                                                                                    公式3

我们可以将mTy/Tx的结果分成整数km与小数△m两部分,即:

\frac{mT_{y}}{T_{x}}=k_{m}+\Delta_{m}                                                                                                                            公式4

将公式4带入到公式3中,得到以下形式:

y(mT_{y})=\sum_{n=-\infty}^{\infty}x(nT_{x})g(T_{x}(k_{m}+\Delta_{m}-n))                                                                              公式5

如果我们定义k=k_{m}-n,公式5可以整理为以下形式

y(mT_{y})=\sum_{k=-\infty}^{\infty}x((k_{m}-k)T_{x})g(kT_{x}+\Delta_{m}T_{x})

同时,mTy=(km+△m)Tx,因此:

y(mT_{y})=y((k_{m}+\Delta_{m})T_{x})

也即:

\small y(mT_{y})=y((k_{m}+\Delta_{m})T_{x})=\sum_{k=-\infty}^{\infty}g(kT_{x}+\Delta_{m}T_{x})x((k_{m}-k)T_{x})                 公式6

观察公式6,当Tx与Ty确定后,对于一个给定的m值,\small k_{m}\small \Delta_{m}就是确定的。

猜你喜欢

转载自blog.csdn.net/ljl86400/article/details/81566879