(29)数字信号处理中正弦波的表示

news2024/11/28 12:45:02

文章目录

  • 前言
  • 一、奈奎斯特采样定理
  • 二、正弦波的时域表示
  • 三、数字信号处理中正弦波的表示方法


前言

本文首先介绍了奈奎斯特采样定理,然后以奈奎斯特采样定理为基础,给出MATLAB代码,说明在数字信号处理中如何表示一个正弦波。


一、奈奎斯特采样定理

奈奎斯特采样定理告诉我们,若一个模拟信号的最高频率为fh,若对其进行不低于fs=2fh的速率进行采样,则获得的离散时间信号将包含原模拟信号的所有频谱分量。也就是说,可以使用该离散时间信号完全恢复出原模拟信号。

对奈奎斯特采样定理的一个常见应用是,语音通信中,经常使用fs=8kHz的采样频率对模拟语音信号进行采样。由于限定语音的最高频率为fh=3000Hz(这通常由低通滤波器来完成),所以此时,完全满足fs≥2fh这一要求。

二、正弦波的时域表示

所谓时域表示,就是以时间为自变量对函数进行表示。在数字信号处理中,与时域对应的另一个概念是频域,这将在后续文章中进行介绍。

正弦函数的时域波形一般表示为y=sin(x),我们可以使用以下MATLAB代码生成这一函数:

x = 0:0.001:2*pi;              % 自变量向量
y = sin(x);                    % 正弦函数值向量

为了使生成的正弦波看上去更加光滑,便要求在时间上的刻度足够精细,这一要求在代码中是通过将自变量x的步进设置成一个很小的值(0.001)来实现的。

所谓“时间上的刻度足够精细”,更专业的说法是有足够高的时域分辨率。

将生成的正弦波画图代码及图形如下:

figure()
plot(x,y)
grid on
title('一个周期的正弦波')
xlabel('x')
ylabel('sin(x)')

在这里插入图片描述

然而,在数字信号处理中,我们一般不会像上面这样直接通过y = sin(x);这样的语句来生成正弦波。因为正弦波的这种表示方法并不能直观地为提供诸如其频率和采样率等信息,而对于一个数字信号而言,频率和采样率无疑是我们非常关心的参数。

三、数字信号处理中正弦波的表示方法

下面以MATLAB代码的形式给出数字信号处理中常用的正弦波的表示方法。该表示方法中可以很清晰直观地得到诸如幅度、频率、采样率、时长等正弦波的参数信息。

% 指定信号的参数,频率1Hz,采样频率为8Hz,信号持续时间为2(16个samples)。
A = 1;                         % 余弦波的振幅
f = 1;                         % 余弦波的振荡频率,简称频率
fs = 8;                        % 数字信号的采样频率(sampling frequency ),简称采样率
Ts = 1/fs;                     % 采样周期,也即采样值的时间间隔
L = 16;                        % 一个采样值称为一个sample,L为sample的个数
t = (0:L-1)*Ts;                % 时间向量

% 生成余弦波x
x = A * cos(2*pi*f*t);         % 余弦波

% 画出生成余弦波的时域波形
figure()
plot(t,x,'-o')
title('余弦信号的时域波形(f=1Hz,fs=8 samples/s)')
grid on
xlabel('t/s')
ylabel('cos(2*pi*f*t)')

代码中,我们将采样率设置为正弦波频率的8倍,这完全满足奈奎斯特采样定理2倍的要求。

画出的正弦波图形如下:

在这里插入图片描述

可以发现,该正弦波的图形看上去并不是很“光滑”,这是由于采样率不够高导致的。不过,尽管如此,该时间离散的正弦波也完全可以恢复出一个频率为1Hz的模拟正弦波。


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

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

相关文章

Flutter技术学习

以下内容更适用于 不拘泥于教程学习,而是从简单项目入手的初学者。 在开始第一个项目之前,我们先要了解 两个概念。 Widget 和 属性 Widget 是用户界面的基本构建块,可以是任何 UI 元素。属性 是 widget 类中定义的变量,用于配…

Python脚本分类和代码举例

Python是一种强大且灵活的编程语言,被广泛应用于数据分析、Web开发、自动化、人工智能等领域。在不同的应用场景下,Python脚本可以被分类为多种类型。本文将深入分析Python脚本的分类,同时提供相关代码示例,帮助读者理解和应用这些…

Spring AI 介绍与入门使用 -- 一个Java版Langchain

Langchain 是什么? Langchain 是一个Python 的AI开发框架,它集成了模型输入输出、检索、链式调用、内存记忆(Memory)、Agents以及回调函数等功能模块。通过这些模块的协同工作,它能够支持复杂的对话场景和任务执行流程…

【大数据】数据采集工具sqoop介绍

文章目录 什么是sqoop?一、Sqoop的起源与发展二、Sqoop的主要功能三、Sqoop的工作原理四、Sqoop的使用场景五、Sqoop的优势六、Sqoop的安装与配置 sqoop命令行一、Sqoop简介与架构二、Sqoop特点三、Sqoop常用命令及参数四、使用示例五、注意事项 什么是sqoop? Sqoop是一款开…

BlackMarket_ 1靶机渗透

项目地址 plain https://download.vulnhub.com/blackmarket/BlackMarket.zip 实验过程 开启靶机虚拟机 ![](https://img-blog.csdnimg.cn/img_convert/169d964d61ea9660c1104e723f71449e.png) 使用nmap进行主机发现,获取靶机IP地址 plain nmap 192.168.47.1-254…

D34【python 接口自动化学习】- python基础之输入输出与文件操作

day34 文件关闭 学习日期:20241011 学习目标:输入输出与文件操作﹣-46 常见常新:文件的关闭 学习笔记: 文件关闭的内部工作过程 close()函数 with语句 常用的打开关闭文件 # 文件关闭 # 方式…

第十八篇——有什么比无穷大更大,比无穷小更小?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 看到这篇文章之后,我才发现,我还可以多么有知&…

IP-Guard与Ping32两大加密软件对比:安全性、功能与性能全面评测

随着网络安全威胁的不断升级,越来越多的企业开始重视文件加密,尤其是那些涉及敏感数据、技术文档和业务机密的文件。市场上涌现出众多加密软件,而IPGuard与Ping32作为其中的佼佼者,分别在不同的企业中获得了广泛应用。本文将对这两…

胤娲科技:破茧成蝶——具身智能工业机器人引领工业新纪元

想象一下,走进一家未来的工厂,不再是冰冷的机械臂在单调地重复着同样的动作,而是灵活多变的智能机器人, 它们能够“看一遍、学一遍、做一遍”,然后高效地投入到生产中。这样的场景,是否已经让你对未来充满了…

MySQL基本语法、高级语法知识总结以及常用语法案例

MySQL基本语法总结 MySQL是一种广泛使用的关系型数据库管理系统,其基本语法涵盖了数据库和数据表的创建、查询、修改和删除等操作。 一、数据库操作 创建数据库(CREATE DATABASE) 语法:CREATE DATABASE [IF NOT EXISTS] databa…

工业4G路由R10提升物流仓储效率

在当今全球化的商业环境中,物流仓储行业面临着越来越大的压力,需要不断提高效率、降低成本并确保货物的安全与准时交付。面对这些挑战,技术革新成为了推动行业发展的关键力量。工业4G路由R10作为一款集成了边缘计算、数据采集、协议转换、远程…

【FL0012】基于SpringBoot和微信小程序的大学生校园兼职系统

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

基于JAVA+SpringBoot+Vue的医疗报销系统

基于JAVASpringBootVue的医疗报销系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈喽兄…

【MATLAB源码-第272期】基于matlab的OMP算法的毫米波MIMO通信系统的混合波束成形仿真。

操作环境: MATLAB 2022a 1、算法描述 在现代无线通信系统中,随着频谱资源的日益紧张,毫米波(mmWave)技术成为5G及未来通信系统的重要组成部分。毫米波频段的宽频带提供了远超传统微波频段的频谱资源,能够…

使用LlamaFactory进行模型微调

使用LlamaFactory进行模型微调 简介 论文地址:https://arxiv.org/pdf/2403.13372 仓库地址:https://github.com/hiyouga/LLaMA-Factory/tree/main 名词解释 1. 预训练 (Pre-training, PT) 预训练是指模型在大规模无监督数据集上进行初步训练的过程…

Kafka-初识

一、Kafka是什么? Kafka是一个高度可扩展、弹性、容错和安全的分布式流处理平台,由服务器和客户端组成,通过高性能TCP网络协议进行通信。它可以像消息队列一样生产和消费数据。可以部署在裸机硬件、虚拟机和容器上,也可以部署在本…

使用3080ti运行blip2的

使用3080ti运行blip2的案例 注意!blip2很吃显存,需要大于80GB显存的卡。我最后安装的所有包的版本信息(python 3.9 )以供参考: 首先,我在运行blip2的demo的时候显存用了80G以上,所以大家卡的显存…

VS Code最新版本Retome远程ssh不兼容旧服务器问题

✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️欢迎关注:👍点赞🙌收藏✍️留言 目录 问题:无法正常使用vscode-remote插件远…

深度优先搜索 - 岛屿最大面积

题目描述 给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水&…

从零开始搭建UVM平台(十二)-加入sequence机制

书接上回: 从零开始搭建UVM平台(一)-只有uvm_driver的验证平台 从零开始搭建UVM平台(二)-加入factory机制 从零开始搭建UVM平台(三)-加入objection机制 从零开始搭建UVM平台(四&…