当前位置: 首页 > news >正文

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的

1、加深对离散信号频谱分析的理解;

2、分析不同加窗长度对信号频谱的影响;

3、理解频率分辨率的概念,并分析其对频谱的 影响;

4、窗长和补零对DFT的影响

实验源码:

 第一题:

% 定义离散信号 x[n]
n = 0:1000; % 离散时间范围
x = cos(pi*n/10) + sin(pi*n/6) + cos(2*pi*n/5); % 信号定义% 计算频谱
X = fft(x); % 应用离散傅里叶变换% 绘制频谱图
f = (0:length(X)-1)*(1/length(X)); % 频率范围
figure(1);
plot(f, abs(X)); % 绘制频谱图
xlabel('Frequency'); % x轴标签
ylabel('Magnitude'); % y轴标签
title('Spectrum'); % 图标题% 窗口长度为 N = 16
N1 = 16;
window1 = rectwin(N1); % 矩形窗口
x1 = x(1:N1) .* window1'; % 截取信号并应用窗口
X1 = fft(x1); % 计算频谱% 窗口长度为 N = 60
N2 = 60;
window2 = rectwin(N2); % 矩形窗口
x2 = x(1:N2) .* window2'; % 截取信号并应用窗口
X2 = fft(x2); % 计算频谱% 窗口长度为 N = 120
N3 = 120;
window3 = rectwin(N3); % 矩形窗口
x3 = x(1:N3) .* window3'; % 截取信号并应用窗口
X3 = fft(x3); % 计算频谱pic1=[1:16];
pic2=[1:60];
pic3=[1:120];
% 绘制不同窗口长度截取后的频谱图
figure(2);
subplot(3, 1, 1);
stem(pic1, abs(X1));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (N = 16)');subplot(3, 1, 2);
stem(pic2, abs(X2));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (N = 60)');subplot(3, 1, 3);
stem(pic3, abs(X3));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (N = 120)');% 窗口长度为 N = 120
N = 120;
n = 0:N-1;% 矩形窗口
window_rect = rectwin(N);
x_rect = x(1:N) .* window_rect';
X_rect = fft(x_rect);% 汉宁窗
window_hann = hann(N);
x_hann = x(1:N) .* window_hann';
X_hann = fft(x_hann);% 黑曼窗
window_hamming = hamming(N);
x_hamming = x(1:N) .* window_hamming';
X_hamming = fft(x_hamming);% 绘制不同窗口对频谱的影响
figure(3);
subplot(3, 1, 1);
stem(pic3, abs(X_rect));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (Rectangular Window)');subplot(3, 1, 2);
stem(pic3, abs(X_hann));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (Hann Window)');subplot(3,1,3);
stem(pic3, abs(X_hamming));
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum (Hamming Window)');

运行效果:

 

第二题:

(1)首先,我们需要确定对连续信号 x(t) 进行采样时的最大采样间隔和频域采样的最少采样点数,以满足要求的频率分辨率。

确定最大采样间隔:

根据奈奎斯特采样定理,连续信号的最大频率成分应小于采样频率的一半。在这种情况下,我们需要确定连续信号的最大频率成分。

给定的信号 x(t) 包含了三个频率成分:200 Hz、100 Hz 和 50 Hz。因此,连续信号的最大频率成分为 200 Hz。根据奈奎斯特采样定理,我们需要选择的采样频率应大于 2 * 200 Hz = 400 Hz。

所以,最大采样间隔为 T = 1 / 400 Hz = 0.0025 秒,即采样频率为 400 Hz。

确定频域采样的最少采样点数:

频域采样的最少采样点数取决于所需的频率分辨率和采样频率。在这种情况下,要求的频率分辨率为 1 Hz,采样频率为 400 Hz。

根据频率分辨率和采样频率的关系,最少采样点数 N 可以通过以下公式计算:

N = 采样频率 / 频率分辨率

N = 400 Hz / 1 Hz = 400

(2)(3)

% 参数设置
Fs = 400; % 采样频率
T = 1/Fs; % 采样间隔
N = 400; % 采样点数
f = (0:N-1) * Fs/N; % 频率轴% 生成信号
t = (0:N-1) * T; % 时间轴
x = cos(200*pi*t) + sin(100*pi*t) + cos(50*pi*t); % 信号% 进行频谱分析
X = abs(fft(x, N)); % DFT% 绘制幅频特性
figure;
plot(f, X);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Amplitude Spectrum');% 分析频域采样点数对频谱的影响
figure;
N_values = [100, 200, 400, 800]; % 不同的采样点数
for i = 1:length(N_values)N = N_values(i);f = (0:N-1) * Fs/N;X = abs(fft(x, N));subplot(length(N_values), 1, i);plot(f, X);xlabel('Frequency (Hz)');ylabel('Magnitude');title(['N = ' num2str(N)]);
end

第三题:

(1)计算周期

信号 x[n] 的周期可以通过求两个频率成分的最小公倍数来确定。

对于频率成分 0.48π 和 0.52π,它们的周期分别是 2π/0.48π ≈ 4.1667 和 2π/0.52π ≈ 3.8462。

要找到两个周期的最小公倍数,我们可以计算它们的倒数,然后取它们的最大公约数的倒数。

最小公倍数 = 1 / (最大公约数的倒数)

计算最大公约数的倒数:

1 / 4.1667 ≈ 0.24

1 / 3.8462 ≈ 0.26

计算最大公约数的倒数:

1 / (最大公约数的倒数) ≈ 1 / 0.02 = 50

因此,信号 x[n] 的周期为 50。

% 参数设置
N = 50; % 一个周期的信号长度
n = 0:N-1; % 时间轴
x = cos(0.48*pi*n) + cos(0.52*pi*n); % 一个周期的信号% 计算一个周期的 DFT
X_periodic = fft(x);% 补零并计算 DFT
x_padded = [x zeros(1, 100-N)]; % 补零
X_padded = fft(x_padded);N100=100;
n100=0:N100-1;
x100=cos(0.48*pi*n100) + cos(0.52*pi*n100); 
% 取 0 ≤ n ≤ 99 并计算 DFT
x_truncated = x100; % 补零使得长度为 100
X_truncated = fft(x_truncated); % 不指定 DFT 点数,使用默认值% 绘制幅频特性
figure;
subplot(3, 1, 1);
stem(abs(X_periodic));
title('DFT of One Period');
xlabel('Frequency Bin');
ylabel('Magnitude');subplot(3, 1, 2);
stem(abs(X_padded));
title('DFT with Zero Padding');
xlabel('Frequency Bin');
ylabel('Magnitude');subplot(3, 1, 3);
stem(abs(X_truncated));
title('DFT of Truncated Signal');
xlabel('Frequency Bin');
ylabel('Magnitude');

相关文章:

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的 1、加深对离散信号频谱分析的理解; 2、分析不同加窗长度对信号频谱的影响; 3、理解频率分辨率的概念,并分析其对频谱的 影响; 4、窗长和补零对DFT的影响 实验源码: 第一题: % 定义离散信…...

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择

云渲染是近年兴起的新行业,很多初学者对它不是很了解,云渲染是什么?为什么要选择云渲染?它是如何计费的又怎么选择?这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…...

C++进阶--哈希表模拟实现unordered_set和unordered_map

哈希表模拟实现unordered_set和unordered_map 一、定义哈希表的结点结构二、定义哈希表的迭代器三、定义哈希表的结构3.1 begin()和end()的实现3.2 默认成员函数的实现3.2.1 构造函数的实现3.2.2 拷贝构造函数的实现(深拷贝)3.2.3 赋值运算符重载函数的实…...

Elasticsearch各种高级文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档过滤字段查询文档概述指定想要显示的字段示例指定不想要显示的字段示例 组合查询文档范围查询文档概述使…...

激光无人机打击系统——光束控制和指向系统

激光无人机(UAV)打击系统中的光束控制和指向系统通常包括以下几个关键组件和技术: 激光发射器:这是系统的核心,负责生成高能量的激光束。常用的激光类型包括固体激光器、化学激光器、光纤激光器等,选择取决…...

pycharm import torch

目录 1 安装 2 conda环境配置 3 测试 开始学习Pytorch! 1 安装 我的电脑 Windows 11 Python 3.11 Anaconda3-2023.09-0-Windows-x86_64.exe cuda_11.8.0_522.06_windows.exe pytorch (管理员命令行安装) pycharm-community-2023.3.2.exe 2 c…...

flask 与小程序 购物车删除和编辑库存功能

编辑 &#xff1a; 数量加减 价格汇总 数据清空 mina/pages/cart/index.wxml <!--index.wxml--> <view class"container"><view class"title-box" wx:if"{{ !list.length }}">购物车空空如也&#xff5e;</view>…...

蓝桥杯真题(Python)每日练Day3

题目 题目分析 为了找到满足条件的放置方法&#xff0c;可以带入总盘数为2和3的情景&#xff0c;用递归做法实现。 2. A中存在1 2两个盘&#xff0c;为了实现最少次数放入C且上小下大&#xff0c;先将1放入B&#xff0c;再将2放入C&#xff0c;最后将1放入C即可。同理当A中存在…...

结构体大揭秘:代码中的时尚之选(上)

目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合&#xff0c;这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量&#xff0c;当然也可以是相同类型的。 我们在生活…...

【unity学习笔记】语音驱动blendershape

1.导入插件 https://assetstore.unity.com/packages/tools/animation/salsa-lipsync-suite-148442 1.选择小人&#xff0c;点击添加组件 分别加入组件&#xff1a; SALSA EmoteR Eyes Queue Processor&#xff08;必须加此脚本&#xff09;&#xff1a;控制前三个组件的脚本。…...

docker常用基础命令

文章目录 1、Docker 环境信息命令1.1、docker info1.2、docker version 2、系统日志信息常用命令2.1、docker events2.2、docker logs2.3、docker history 3、容器的生命周期管理命令3.1、docker create3.2、docker run 总结 1、Docker 环境信息命令 1.1、docker info 显示 D…...

自动驾驶中的坐标系

自动驾驶中的坐标系 自动驾驶中的坐标系 0.引言1.相机传感器坐标系2.激光雷达坐标系3.车体坐标系4.世界坐标系4.1.地理坐标系4.2.投影坐标系4.2.1.投影方式4.2.2.墨卡托(Mercator)投影4.2.3.高斯-克吕格(Gauss-Kruger)投影4.2.4.通用横轴墨卡托UTM&#xff08;UniversalTransve…...

js数组的截取和合并

在JavaScript中&#xff0c;你可以使用slice()方法来截取数组&#xff0c;使用concat()方法来合并数组。 截取数组 slice()方法返回一个新的数组对象&#xff0c;这个对象是一个由原数组的一部分浅复制而来。它接受两个参数&#xff0c;第一个参数是开始截取的位置&#xff08…...

2024美赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…...

大中台,小前台:打造快速响应市场的企业竞争力

2015年&#xff0c;大家都听过“大中台、小前台”战略&#xff0c;听上去很牛。“大中台、小前台”背后完成了一件事情&#xff1a;把阿里巴巴和支付宝所有的基础技术全部统一到阿里云上&#xff0c;这是个重大的技术变革。为了完成这个技术变革&#xff0c;阿里巴巴做了非常好…...

SpringCloud Alibaba 深入源码 - Nacos 和 Eureka 的区别(健康检测、服务的拉取和订阅)

目录 一、Nacos 和 Eureka 的区别 1.1、以 Nacos 注册流程来解析区别 一、Nacos 和 Eureka 的区别 1.1、以 Nacos 注册流程来解析区别 a&#xff09;首先&#xff0c;我们的服务启动时。都会把自己的信息提交给注册中心&#xff0c;然后注册中心就会把信息保存下来. 注册的…...

Java复习_3

填空题 课程推荐的 jdk 下载网址为 jdk.java.net 使用命令行编译程序&#xff1a;javac -d bin stc*.java 使用命令行运行程序&#xff1a; java -cp bin 类名 java 语言标识符&#xff1a;字母、数字、下划线和美元符号&#xff0c;数字不能做首字母 java 语言中标识符区…...

分类预测 | Matlab实现KPCA-EBWO-SVM分类预测,基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测

分类预测 | Matlab实现KPCA-EBWO-SVM分类预测&#xff0c;基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-EBWO-SVM分类预测&#xff0c;基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测分类效果基本描述程序设计参…...

力扣hot100 找到字符串中所有字母异位词 滑动窗口 双指针 一题双解

Problem: 438. 找到字符串中所有字母异位词 文章目录 思路滑动窗口 数组滑动窗口 双指针 思路 &#x1f469;‍&#x1f3eb; 参考题解 滑动窗口 数组 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( 1 ) O(1) O(1) class Solution { // 滑动窗口 …...

PG DBA培训21:PostgreSQL性能优化之基准测试

本课程由风哥发布的基于PostgreSQL数据库的系列课程&#xff0c;本课程属于PostgreSQL Performance Benchmarking&#xff0c;学完本课程可以掌握PostgreSQL性能基准测试基础知识,基准测试介绍,基准测试相关指标,TPCC基准测试基础,PostgreSQL测试工具介绍,PostgreSQL性能基准测…...

使用excel从1-2048中随机选择1个整数,并展示与其对应的单词

在Excel中&#xff0c;你可以使用以下指令来从1到2048之间随机选择一个整数&#xff0c;并展示其对应的单词&#xff1a; 1. 首先&#xff0c;在一个空白单元格中输入以下公式&#xff1a; INDEX(单词列表范围, RANDBETWEEN(1, 2048)) 这里的"单词列表范围"是一个包…...

c++可调用对象、function类模板与std::bind

函数调用与函数调用运算符 先写一个简单的函数&#xff0c;如下&#xff1a; /*函数的定义*/ int func(int i) {cout<<"这是一个函数\t"<<i<<endl; }void test() {func(1);//函数的调用 } 通过这个普通的函数可以看到&#xff0c;调用一个函数很…...

【高危】Apache Solr 环境变量信息泄漏漏洞

漏洞描述 Apache Solr 是一款开源的搜索引擎。 在 Apache Solr 受影响版本中&#xff0c;由于 Solr Metrics API 默认输出所有未单独配置保护策略的环境变量。在默认无认证或具有 metrics-read 权限的情况下&#xff0c;攻击者可以通过向 /solr/admin/metrics 端点发送恶意请…...

Python中的卷积神经网络(CNN)入门

卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09;是一类特别适用于处理图像数据的深度学习模型。在Python中&#xff0c;我们可以使用流行的深度学习库TensorFlow和Keras来创建和训练一个CNN模型。在本文中&#xff0c;我们将介绍如何使用Keras创建一个…...

vulnhub靶机HotelWW

下载地址&#xff1a;https://download.vulnhub.com/worstwesternhotel/HotelWW.ova 主机发现 目标142 端口扫描 服务版本扫描 漏洞扫描 看一下web 好好好这么玩改host 啥也没有先做个目录爆破 扫描太慢我就没看了看几个重点的txt&#xff08;robot,config&#xff0c;readme&…...

ArcGIS Pro 标注牵引线问题

ArcGIS Pro 标注 模仿CAD坐标牵引线问题 右键需要标注的要素&#xff0c;进入标注属性。 选择背景样式 在这里有可以选择的牵引线样式 选择这一个&#xff0c;可以根据调整间距来进行模仿CAD标注样式。 此图为cad样式 此为调整后gis样式 此处可以调整牵引线的样式符号 …...

Java8的Stream最佳实践

从这一篇文章开始&#xff0c;我们会由浅入深&#xff0c;全面的学习stream API的最佳实践&#xff08;结合我的使用经验&#xff09;&#xff0c;本想一篇写完&#xff0c;但写着写着发现需要写的内容太多了&#xff0c;所以分成一个系列慢慢来说。给大家分享我的经验的同时&a…...

Spark SQL函数定义

目录 窗口函数 SQL函数分类 Spark原生自定义UDF函数 Pandas的UDF函数 Apache Arrow框架基本介绍 基于Arrow完成Pandas DataFrame和Spark DataFrame互转 基于Pandas完成UDF函数 自定义UDF函数 自定义UDAF函数 窗口函数 分析函数 over(partition by xxx order by xxx [as…...

触摸屏监控双速电动机-PLC I/O电路设计

PLC的输入接线电路图 PLC的输入接线电路如图1-21所示。24VDC电源选用0.7mm2的棕色和蓝色软铜导线&#xff0c;弱电信号线用0.5~0.7mm2的黑色或者白色软铜导线。 PLC输入接线图 PLC的输出接线电路图 PLC的输出接线电路如图1-22所示。AC220V接触器型号为CJX2-12&#xff0c;线…...

idea中使用git提交代码报 Nothing To commit No changes detected

问题描述 在idea中右键&#xff0c;开始将变更的代码进行提交的时候&#xff0c;【Commit Directory】点击提交的时候 报 Nothing To commit No changes detected解决方案 在这里点击Test 看看是不是能下面显示git版本&#xff0c;不行的话 会显示一个 fix的字样&#xff0c;行…...