news 2026/4/16 11:52:23

信号处理仿真:滤波器设计与仿真_13.多速率信号处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信号处理仿真:滤波器设计与仿真_13.多速率信号处理

13. 多速率信号处理

13.1 采样率转换的基本概念

多速率信号处理的核心在于采样率转换,其目的是在不同的采样率之间进行信号的转换。采样率转换通常分为两类:上采样(Upsampling)和下采样(Downsampling)。

13.1.1 上采样(Upsampling)

上采样是指将信号的采样率提高的过程。具体来说,就是在原始信号的每个样本之间插入一个或多个零值,从而增加信号的采样点数。上采样的目的是为了提高信号的分辨率,使其在更高采样率的系统中能够更好地处理。

原理

假设原始信号的采样率为f s f_sfs,需要将采样率提高L LL倍,那么上采样的过程可以表示为:

  1. 插入零值:在原始信号的每个样本之间插入L − 1 L-1L1个零值。
  2. 滤波:使用低通滤波器(LPF)对插入零值后的信号进行滤波,以去除由插入零值引起的频率混叠。
内容

在上采样过程中,插入零值会导致信号的频谱在折叠频率处产生重复,这些重复的频谱需要通过低通滤波器来消除。常用的低通滤波器包括FIR滤波器和IIR滤波器,其中FIR滤波器因其线性相位特性而更为常用。

例子

假设我们有一个采样率为1000 Hz的信号,需要将其采样率提高到2000 Hz。我们使用MATLAB进行上采样和滤波操作。

% 原始信号fs=1000;% 原始采样率t=0:1/fs:1;% 时间向量f0=50;% 信号频率x=cos(2*pi*f0*t);% 原始信号% 上采样因子L=2;% 上采样因子% 插入零值x_up=upsample(x,L);% 设计低通滤波器fc=100;% 滤波器截止频率h=fir1(50,fc/(fs*L/2));% 设计FIR低通滤波器% 滤波x_filtered=filter(h,1,x_up);% 绘制原始信号和上采样后的信号figure;subplot(3,1,1);plot(t,x);title('原始信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,2);plot(t,x_up(1:length(t)));title('插入零值后的信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,3);plot(t,x_filtered(1:length(t)));title('滤波后的信号');xlabel('时间 (s)');ylabel('幅度');

在这个例子中,我们首先生成了一个1000 Hz采样率的50 Hz正弦信号。然后,通过upsample函数将信号的采样率提高到2000 Hz,并在每个样本之间插入一个零值。接着,我们设计了一个截止频率为100 Hz的FIR低通滤波器,并使用filter函数对插入零值后的信号进行滤波,以去除频率混叠。最后,我们绘制了原始信号、插入零值后的信号和滤波后的信号,以直观地展示上采样的效果。

13.1.2 下采样(Downsampling)

下采样是指将信号的采样率降低的过程。具体来说,就是在原始信号中每隔M − 1 M-1M1个样本丢弃M − 1 M-1M1个样本。下采样的目的是为了减少信号的采样点数,降低处理的复杂度或适应更低采样率的系统。

原理

假设原始信号的采样率为f s f_sfs,需要将采样率降低M MM倍,那么下采样的过程可以表示为:

  1. 滤波:使用低通滤波器(LPF)对原始信号进行预滤波,以去除高频成分,防止频率混叠。
  2. 丢弃样本:从预滤波后的信号中每隔M − 1 M-1M1个样本丢弃M − 1 M-1M1个样本。
内容

在下采样过程中,预滤波是非常重要的步骤,因为如果不进行预滤波,高频成分会在下采样后混叠到低频区域,导致信号失真。常用的低通滤波器包括FIR滤波器和IIR滤波器,其中FIR滤波器因其线性相位特性而更为常用。

例子

假设我们有一个采样率为2000 Hz的信号,需要将其采样率降低到1000 Hz。我们使用MATLAB进行预滤波和下采样操作。

% 原始信号fs=2000;% 原始采样率t=0:1/fs:1;% 时间向量f0=50;% 信号频率x=cos(2*pi*f0*t)+0.5*cos(2*pi*300*t);% 原始信号(包含高频成分)% 下采样因子M=2;% 下采样因子% 设计低通滤波器fc=400;% 滤波器截止频率h=fir1(50,fc/(fs/2));% 设计FIR低通滤波器% 预滤波x_filtered=filter(h,1,x);% 下采样x_down=downsample(x_filtered,M);% 绘制原始信号和下采样后的信号figure;subplot(3,1,1);plot(t,x);title('原始信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,2);plot(t,x_filtered);title('预滤波后的信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,3);plot(t(1:2:end),x_down);title('下采样后的信号');xlabel('时间 (s)');ylabel('幅度');

在这个例子中,我们首先生成了一个2000 Hz采样率的包含50 Hz和300 Hz正弦信号的混合信号。然后,我们设计了一个截止频率为400 Hz的FIR低通滤波器,并使用filter函数对原始信号进行预滤波,以去除高频成分。接着,我们通过downsample函数将预滤波后的信号的采样率降低到1000 Hz,并绘制了原始信号、预滤波后的信号和下采样后的信号,以直观地展示下采样的效果。

13.2 多相滤波器

多相滤波器是多速率信号处理中常用的一种滤波器结构,通过将其应用于上采样和下采样操作,可以显著提高处理效率。

13.2.1 多相滤波器的基本原理

多相滤波器通过将滤波器的冲激响应分解为多个子滤波器,每个子滤波器处理信号的不同相位,从而实现高效的采样率转换。多相滤波器可以分为多相上采样滤波器和多相下采样滤波器。

多相上采样滤波器

多相上采样滤波器将滤波器的冲激响应分解为L LL个子滤波器,每个子滤波器处理信号的不同相位。具体步骤如下:

  1. 分解滤波器:将滤波器的冲激响应h [ n ] h[n]h[n]分解为L LL个子滤波器h 0 [ n ] , h 1 [ n ] , … , h L − 1 [ n ] h_0[n], h_1[n], \ldots, h_{L-1}[n]h0[n],h1[n],,hL1[n]
  2. 插入零值:在原始信号的每个样本之间插入L − 1 L-1L1个零值。
  3. 多相滤波:将插入零值后的信号分别通过每个子滤波器。
  4. 合并信号:将多相滤波后的信号合并,得到最终的上采样信号。
多相下采样滤波器

多相下采样滤波器将滤波器的冲激响应分解为M MM个子滤波器,每个子滤波器处理信号的不同相位。具体步骤如下:

  1. 分解滤波器:将滤波器的冲激响应h [ n ] h[n]h[n]分解为M MM个子滤波器h 0 [ n ] , h 1 [ n ] , … , h M − 1 [ n ] h_0[n], h_1[n], \ldots, h_{M-1}[n]h0[n],h1[n],,hM1[n]
  2. 多相滤波:将原始信号分别通过每个子滤波器。
  3. 丢弃样本:从每个子滤波器的输出中丢弃M − 1 M-1M1个样本。
  4. 合并信号:将多相滤波后的信号合并,得到最终的下采样信号。
13.2.2 多相滤波器的设计与实现

多相滤波器的设计通常基于FIR滤波器,因为FIR滤波器具有线性相位特性,能够在多速率信号处理中提供更好的性能。

多相上采样滤波器的设计

假设我们有一个FIR滤波器h [ n ] h[n]h[n],采样率转换因子为L LL,那么可以将h [ n ] h[n]h[n]分解为L LL个子滤波器:

h k [ n ] = h [ k + n L ] h_k[n] = h[k + nL]hk[n]=h[k+nL]

其中k = 0 , 1 , … , L − 1 k = 0, 1, \ldots, L-1k=0,1,,L1

多相下采样滤波器的设计

假设我们有一个FIR滤波器h [ n ] h[n]h[n],采样率转换因子为M MM,那么可以将h [ n ] h[n]h[n]分解为M MM个子滤波器:

h k [ n ] = h [ k + n M ] h_k[n] = h[k + nM]hk[n]=h[k+nM]

其中k = 0 , 1 , … , M − 1 k = 0, 1, \ldots, M-1k=0,1,,M1

例子

假设我们有一个采样率为1000 Hz的信号,需要将其采样率提高到2000 Hz。我们使用多相上采样滤波器进行处理。

% 原始信号fs=1000;% 原始采样率t=0:1/fs:1;% 时间向量f0=50;% 信号频率x=cos(2*pi*f0*t);% 原始信号% 上采样因子L=2;% 上采样因子% 设计FIR低通滤波器fc=100;% 滤波器截止频率h=fir1(50,fc/(fs*L/2));% 设计FIR低通滤波器% 分解滤波器h_phases=reshape(h,L,[]);% 分解为L个子滤波器% 插入零值x_up=upsample(x,L);% 多相滤波x_polyphase=zeros(L,length(x_up)/L);fork=0:L-1x_polyphase(k+1,:)=filter(h_phases(k+1,:),1,x_up(k+1:L:end));end% 合并信号x_filtered=x_polyphase(:)';% 绘制原始信号和多相上采样后的信号figure;subplot(3,1,1);plot(t,x);title('原始信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,2);plot(t,x_up(1:length(t)));title('插入零值后的信号');xlabel('时间 (s)');ylabel('幅度');subplot(3,1,3);plot(t,x_filtered(1:length(t)));title('多相上采样后的信号');xlabel('时间 (s)');ylabel('幅度');

在这个例子中,我们首先生成了一个1000 Hz采样率的50 Hz正弦信号。然后,我们设计了一个截止频率为100 Hz的FIR低通滤波器,并将其分解为2个子滤波器。接下来,我们通过upsample函数将信号的采样率提高到2000 Hz,并插入零值。然后,我们使用多相滤波器对插入零值后的信号进行滤波,并将多相滤波后的信号合并,得到最终的上采样信号。最后,我们绘制了原始信号、插入零值后的信号和多相上采样后的信号,以直观地展示多相上采样的效果。

13.3 采样率转换的综合应用

在实际应用中,采样率转换往往不是单一的上采样或下采样,而是两者结合的综合应用。这种综合应用通常称为采样率转换(Sample Rate Conversion,SRC)。

13.3.1 采样率转换的基本原理

采样率转换的基本原理是通过上采样和下采样的组合,将信号从一个采样率转换到另一个采样率。具体步骤如下:

  1. 上采样:将信号的采样率提高到一个中间采样率。
  2. 滤波:使用低通滤波器对上采样后的信号进行滤波。
  3. 下采样:将滤波后的信号的采样率降低到目标采样率。
13.3.2 采样率转换的实现

采样率转换的实现可以通过多相滤波器来优化,提高处理效率。常见的采样率转换应用包括音频处理、通信系统中的信号传输和接收等。

例子

假设我们有一个采样率为1000 Hz的信号,需要将其采样率转换到1500 Hz。我们使用多相滤波器进行处理。

% 基带信号fs1=1000;% 基带采样率t1=0:1/fs1:1;% 时间向量f0=50;% 信号频率x1=cos(2*pi*f0*t1);% 基带信号% 中频采样率fs2=10000;% 中频采样率% 计算上采样因子L=fs2/fs1;% 上采样因子% 设计FIR低通滤波器fc=100;% 滤波器截止频率h=fir1(50,fc/(fs1*L/2));% 设计FIR低通滤波器% 分解滤波器h_phases=reshape(h,L,[]);% 分解为L个子滤波器% 上采样x_up=upsample(x1,L);% 多相滤波x_polyphase=zeros(L,length(x_up)/L);fork=0:L-1x_polyphase(k+1,:)=filter(h_phases(k+1,:),1,x_up(k+1:L:end));end% 合并信号x_filtered=x_polyphase(:)';% 调制fc_if=500;% 中频载波频率t2=0:1/fs2:1;% 中频时间向量x_if=x_filtered.*cos(2*pi*fc_if*t2);% 中频信号% 绘制基带信号和中频信号figure;subplot(2,1,1);plot(t1,x1);title('基带信号');xlabel('时间 (s)');ylabel('幅度');subplot(2,1,2);plot(t2,x_if);title('中频信号');xlabel('时间 (s)');ylabel('幅度');

在这个例子中,我们首先生成了一个1000 Hz采样率的50 Hz正弦基带信号。然后,我们计算了上采样因子L LL,并通过upsample函数将信号的采样率提高到10000 Hz,并插入零值。接着,我们设计了一个截止频率为100 Hz的FIR低通滤波器,并将其分解为L LL个子滤波器。我们通过多相滤波器对插入零值后的信号进行滤波,并将多相滤波后的信号合并。最后,我们使用500 Hz的中频载波频率对滤波后的信号进行调制,生成中频信号,并绘制了基带信号和中频信号,以直观地展示信号传输中的采样率转换效果。

13.4.2 信号接收中的采样率转换

在信号接收过程中,采样率转换可以用于将接收到的中频或射频信号转换为基带信号。具体步骤如下:

  1. 解调:将接收到的中频或射频信号进行解调,恢复为基带信号。
  2. 滤波:使用低通滤波器对解调后的信号进行滤波。
  3. 下采样:将滤波后的信号的采样率降低到基带信号的采样率。
例子

假设我们接收到一个中频信号,采样率为10000 Hz,需要将其转换为基带信号,采样率为1000 Hz。我们使用MATLAB进行解调、滤波和下采样操作。

% 接收到的中频信号fs2=10000;% 中频采样率t2=0:1/fs2:1;% 时间向量f0=50;% 信号频率fc_if=500;% 中频载波频率x_if=cos(2*pi*f0*t2).*cos(2*pi*fc_if*t2);% 接收到的中频信号% 基带采样率fs1=1000;% 基带采样率% 计算下采样因子M=fs2/fs1;% 下采样因子% 设计FIR低通滤波器fc=100;% 滤波器截止频率h=fir1(50,fc/(fs2/2));% 设计FIR低通滤波器% 分解滤波器h_phases=reshape(h,M,[]);% 分解为M个子滤波器% 解调x_demod=x_if.*cos(2*pi*fc_if*t2);% 解调后的信号% 预滤波x_filtered=filter(h,1,x_demod);% 下采样x_down=downsample(x_filtered,M);% 计算新的时间向量t1=0:1/fs1:1;% 绘制中频信号和基带信号figure;subplot(2,1,1);plot(t2,x_if);title('接收到的中频信号');xlabel('时间 (s)');ylabel('幅度');subplot(2,1,2);plot(t1,x_down);title('基带信号');xlabel('时间 (s)');ylabel('幅度');

在这个例子中,我们首先生成了一个10000 Hz采样率的包含50 Hz信号和500 Hz中频载波的解调信号。然后,我们计算了下采样因子M MM,并通过downsample函数将信号的采样率降低到1000 Hz。接着,我们设计了一个截止频率为100 Hz的FIR低通滤波器,并将其分解为M MM个子滤波器。我们通过多相滤波器对解调后的信号进行滤波,并将多相滤波后的信号合并。最后,我们绘制了接收到的中频信号和基带信号,以直观地展示信号接收中的采样率转换效果。

13.5 多速率信号处理的优缺点

多速率信号处理在信号处理领域中具有重要的应用价值,但也存在一些优缺点。

13.5.1 优点
  1. 提高效率:多相滤波器可以显著减少计算量,提高处理效率。
  2. 灵活性:可以灵活地在不同采样率之间进行信号转换,适应各种系统需求。
  3. 降低复杂度:通过上采样和下采样的组合,可以有效地降低信号处理的复杂度。
13.5.2 缺点
  1. 设计复杂:多相滤波器的设计和实现相对复杂,需要考虑多个子滤波器的优化。
  2. 延迟问题:滤波器的延迟可能会对实时系统产生影响,需要谨慎处理。
  3. 计算资源:虽然多相滤波器可以减少计算量,但在某些情况下仍然需要较多的计算资源。

13.6 总结

多速率信号处理通过采样率转换技术,可以在不同采样率的系统之间实现信号的有效传输和处理。上采样和下采样是采样率转换的两个基本操作,而多相滤波器则是一种高效的滤波器结构,能够显著提高处理效率。在实际应用中,采样率转换通常需要结合上采样和下采样的综合操作,特别是在通信系统中的信号传输和接收过程中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:43:35

刚接了个PLC门禁系统的活,客户非要看明白控制逻辑怎么跑的。今天咱们就掰碎了说说这个门禁系统设计,从硬件接线到梯形图编程,再到上位机组态,手把手给你整明白

基于PLC的门禁系统设计自动门禁电气控制设计门禁组态设计 带解释的梯形图接线图原理图图纸,io分配,组态画面先说IO分配这个基本功。现场用的西门子S7-1200,数字量模块SM1223。输入点I0.0接读卡器信号,I0.1是红外防夹检测&#xff…

作者头像 李华
网站建设 2026/4/12 9:49:43

人工智能、机器学习和大数据的核心课程

一、人工智能/机器学习专业核心课程体系 1. 数学基础(基石课程)课程核心内容重要性高等数学/微积分极限、导数、积分、多元微积分★★★★★ 优化算法基础线性代数矩阵运算、特征值、特征向量、奇异值分解★★★★★ 深度学习核心数学工具概率论与数理统…

作者头像 李华
网站建设 2026/4/15 22:46:47

Keil5安装包下载与MDK组件选择:全面讲解安装选项

以下是对您提供的博文内容进行 深度润色与工程化重构后的终稿 。全文已彻底去除AI生成痕迹,采用资深嵌入式工程师口吻撰写,语言自然、节奏紧凑、逻辑层层递进,兼具教学性、实战性与行业洞察力。结构上打破传统“引言-正文-总结”范式&#…

作者头像 李华
网站建设 2026/4/12 11:19:07

水下无人自主航行器(AUV)的MATLAB/Simulink仿真程序实现

一、动力学建模与仿真框架 AUV的动力学建模需基于六自由度(6-DOF)运动方程,结合牛顿-欧拉定理或拉格朗日方法。以下是核心建模步骤: 1. 运动学与动力学方程运动学模型:描述位置(η)与姿态&#…

作者头像 李华
网站建设 2026/4/16 10:46:10

BLE设备通信劫持的自动化测试框架

BLE通信劫持的威胁背景 蓝牙低能耗(BLE)技术因其低功耗和便捷性,在物联网设备(如智能家居、可穿戴设备)中广泛应用。然而,BLE通信易受劫持攻击,例如通过中间攻击(Man-in-the-Middle…

作者头像 李华
网站建设 2026/4/11 21:26:59

MCP使用必看:十二个常见问题、自查清单与改进策略

一、模型上下文协议(MCP)的十二大缺陷 1. 数据契约缺失 问题 MCP 采用 Schemaless JSON,缺乏强类型、版本管理和兼容性校验。 影响 容易引发静默错误,无法进行静态检查,无法自动生成 SDK,审计也无法举证。…

作者头像 李华