【数字信号处理】带通采样定理及其MATLAB仿真

目录

    • 一、带通采样定理
      • 1.1 内容
      • 1.2 公式推导
    • 二、MATLAB信号仿真
      • 2.1 信号仿真实验
      • 2.2 MATLAB代码
    • 三、总结
    • 参考

一、带通采样定理

按照奈奎斯特采样定理(低通采样),采样频率 f s f_{s} fs 要大于等于信号中最高频率 f m a x f_{max} fmax 的2倍,才可以保证采样后的数字信号通过DAC转换后,可以无失真的恢复为原信号。然而,如果信号的频率分布在某一有限频带上,并且信号的最高频率 f m a x f_{max} fmax 远大于信号的带宽 B B B(带通信号),若此时仍依据低通采样定理进行处理,则需要特别高的采样率,一方面会导致后续信号处理的计算量极大,无法保证数字信号处理的实时性;另一方面,ADC器件的性能受限,无法实现对应的采样频率。因此,需要一种适用于带通信号的采样方式,以达到上述要求。

1.1 内容

带通采样定理:设一时间连续的模拟信号 x ( t ) x(t) x(t),其频带限制在( f L f_{L} fL f H f_{H} fH)内,如果信号的采样频率满足:
f s = 2 ( f L + f H ) 2 m − 1 = 4 f 0 2 m − 1 − − − − − − − − − ( 1 − 1 ) f_{s}=\frac{2(f_{L}+f_{H})}{2m-1}=\frac{4f_{0}}{2m-1} ---------(1-1) fs=2m12(fL+fH)=2m14f0(11)
f s ≥ = 2 ( f H − f L ) = 2 B − − − − − − − − − − − ( 1 − 2 ) f_{s}≥=2(f_{H}-f_{L})=2B-----------(1-2) fs≥=2(fHfL)=2B(12)
式中, f 0 = ( f L + f H ) 2 f_{0}=\frac{(f_{L}+f_{H})}{2} f0=2(fL+fH) 为带通信号的中心频率, B = f H − f L B=f_{H}-f_{L} B=fHfL为信号的带宽, m = 1 , 2 , . . . m=1,2,... m=1,2,...,取可以满足以上两式的正整数。
则此时用 f s f_{s} fs 进行等间隔采样所得到的信号采样值可以不失真的恢复为原始信号。

1.2 公式推导

二、MATLAB信号仿真

2.1 信号仿真实验

以64KHz的采样频率对3KHz和67KHz的信号进行采样,采样后信号的频率会怎么样呢?
在这里插入图片描述
可以发现,利用采样频率为64KHz对67KHz的信号进行采样,采样后的信号波形与3KHz的信号波形一致,说明采样后信号的频谱进行了搬移,即67-64=3。

2.2 MATLAB代码

clc;
clear;
close all;fs = 64000;     % 采样频率
f1 = 3000;
f2 = 67000;
N = 100;        % 数据长度
t = (0:N-1)/fs;x1 = sin(2*pi*f1*t);
x2 = sin(2*pi*f2*t);figure;
subplot(2,1,1);plot(t,x1);title('f1 = 3KHz');
subplot(2,1,2);plot(t,x2);title('f2 = 67KHz');

三、总结

(1)采样的本质是对信号的频谱进行搬移,最根本的要求就是采样后信号的频谱不混叠。
(2)低通采样定理要求采样频率 f s f_{s} fs 要大于等于信号中最高频率 f m a x f_{max} fmax 的2倍,而带通采样的采样频率与信号的最高频率没有关系,只与信号的带宽有关。
(3)带通采样定理中采样频率的取值是不连续的分段区间,而不同于低通采样信号的最小采样频率。
(4)带通采样的采样频率最小可等于信号带宽的2倍,实际工程应用中常取信号带宽的4倍或更高。

参考

[1] 王坡. PD雷达信号处理关键算法研究与实现[D].南京信息工程大学,2019.DOI:10.27248/d.cnki.gnjqc.2019.000075.
[2] 工程中的带通采样定理 [学以致用系列课程之数字信号处理]
[3] 陈伯孝, 等. 现代雷达系统分析与设计[M]. 西安:西安电子科技大学出版社, 2012.9.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++OpenCV(2):图像处理基础概念与操作

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 文章目录 图形读取与显示加载图片显示图片打印图片信息保存图片 色彩模型转换RGB颜色模型HSV颜色模型HLS模型LAB模型 图像像素读写操作像素算数运…

macOS 源码编译 qpress

╰─➤ git clone https://github.com/PierreLvx/qpress.git ╰─➤ cd qpress ╰─➤ make g -O3 -o qpress -x c quicklz.c -x c qpress.cpp aio.cpp utilities.cpp -lpthread -Wall -Wextra -Werror ╰─➤ sudo make install …

怎么快速定位bug?怎么编写测试用例?

目录 01定位问题的重要性 02问题定位技巧 03初次怎么写用例 作为一名测试人员如果连常见的系统问题都不知道如何分析,频繁将前端人员问题指派给后端人员,后端人员问题指派给前端人员,那么在团队里你在开发中的地位显而易见 ,口碑…

垃圾回收标记阶段算法

1.标记阶段的目的 主要是在GC在前,判断出哪些是有用的对象,哪些是需要回收的对象,只有被标记为垃圾对象,GC才会对其进行垃圾回收。判断对象是否为垃圾对象的两种方式:引用计数算法和可达性分析算法。 2.引用计数算法…

[QT编程系列-33]:科学计算 - 开源数值计算库GNU Scientific Library(简称GSL)

目录 第1章 简介 1.1 概述 1.2 主要功能 1.3 C接口 1.4 在QT中使用GSL的步骤 第2章 GSL C函数库 2.1 功能概述 2.2 代码示例 第1章 简介 1.1 概述 GNU Scientific Library(简称GSL)是一个开源数值计算库,旨在提供各种数学和科学计算…

如何搭建使用dubbo-Admin?

dubbo-Admin介绍 一款用于dubbo可视化界面操作的管理平台 dubbo-Admin特点 dubbo-Admin是dubbo的管理界面平台,且是一个前后端分离的项目,前端使用vue,后端使用springboot。 软件下载 dubbo-admin-0.5.0.zip 软件使用

base-R(又称为基础R)中的apply函数族

说明:此为学习baseR中apply函数族笔记,仅学习使用。 C编程语言使用循环,但是R软件提倡使用向量化操作和apply系列函数来批量处理数据,从而大大简化了计算,提高代码的速度、可读性和可维护性。其实,大部分ap…

【力扣】74. 搜索二维矩阵 <二分法>

【力扣】74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&am…

会议OA项目之会议审批(亮点功能:将审批人签名转换为电子手写签名图片)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.主要功能点介绍 二.效果展示 三.前端…

SQL 三表联查

三表联查 创建三张表来三表联查一下吧inner join 内连接full join 全连接left join 左连接因需要在三个表中查东西,还不能要交集,要并集。 创建三张表 我用的是DBaver来创建,下面就是代码,跑完之后会出现三个表。 create table tas_master.hk_test_1(id INT not null,na…

MongoDB 的日常使用

一、简介 1、 常见的数据库分类 RDBMS(关系型数据库):常见的关系型数据库有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL; NoSQL(非关系型数据库):常见的非关系型数据库有 …

thinkphp实现无限分类(使用递归)

thinkphp实现无限分类(使用递归) 本文实例为大家分享了thinkphp实现无限分类的详细代码,希望对大家学习无限分类有所启发。 数据库:test 数据表:(tp_category): Common/conf/conf…

在VSCode中实现Rust编程调试指南

在 VS Code 中调试 Rust:终极指南 在本教程中,您将学习如何使用 VS Code 调试 Rust。可用于使用 VS Code 调试 Rust 的操作。设置 VS Code 来调试 Rust Rust因其易用性、安全性和高性能而继续保持其作为最受欢迎的编程语言的地位。随着 Rust 的流行&…

ubuntu wget ERROR 403: Forbidden 错误

解决办法: 临时变更wget的UA wget -U "浏览器的useragent" 下载地址永久变更Wget(未测试) 修改配置文件/etc/wgetrc,添加下面这一行: header User-Agent: "浏览器的useragent"上面这个配置后…

elementui el-table折叠表格,点击主表数据展开从表明细

用element-ui 的el-table实现&#xff1a;主表table可实现展开行显示关联的明细表table的列表数据&#xff0c;效果图如下 <el-tableref"tableData"v-loading"listLoading":data"tableData"row-key"id"borderstripehighlight-curr…

Unity中的Translate和Rotate

示例代码&#xff1a; using UnityEngine; using System.Collections;public class TransformFunctions : MonoBehaviour {public float moveSpeed 10f;public float turnSpeed 50f;void Update (){//按上箭头向前移动if(Input.GetKey(KeyCode.UpArrow))transform.Translate…

自动驾驶感知系统-激光雷达

感知系统 现有的车载传感器主要包括超声波雷达、激光雷达、毫米波雷达、车载摄像头、红外探头等。主流的自动驾驶感知平台以雷达和车载摄像头为主&#xff0c;呈现多传感器融合发展趋势。基于测量能力和环境适应性&#xff0c;预计雷达和车载摄像头会保持其感知平台霸主地位&a…

在Linux、Ubuntu中跨平台编译ARM(AARCH64)平台的binutils

Binutils 是GNU(https://www.gnu.org/)提供的一组二进制工具的集合。通常,在已经安装了Linux操作系统的个人电脑上,系统就已经自带了这个工具集。但在进行嵌入式开发的时候,可能会用到支持ARM64平台的Binutils,这时就需要用到交叉编译。 此前,在【1】我们已经介绍过Ubun…

在react中配置less

第一步&#xff1a;暴露出webpack配置文件 终端命令&#xff1a;npm run eject (此命令一旦运行不可逆) 第二步&#xff1a;安装less以及less-loader npm install less less-loader --save-dev 第三步&#xff1a;修改webpack的配置文件 运行完以上命令后&#xff0c;项目…

精通自动化,Pytest自动化测试框架-fixture用例的前后置(实现)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试用例实现前后…