使用自功率谱、互功率谱估计滤波器幅频特性

news2024/10/7 2:29:43

这段时间终于对工程中的随机信号的一般处理方式有点头绪了,功率谱密度估计是十分重要的方式之一,仍需继续深入细化相关内容。


示例:使用自功率谱、互功率谱估计滤波器幅频特性,自己实现 & Matlab自带函数实现。

clc;clear;close all;
fs = 44100;
t = 0:1/fs:1-1/fs;
in = randn(size(t));
 
winlen = 1024;
overlap = winlen/2;
 
% 滤波
order = 1; % 滤波器阶数高后,则曲线不太平滑
fc = 1200;
[b,a] = butter(order, fc/(fs/2), 'low');
out = filter(b, a, in);
 
%% 自己实现cpsd、pwelch。整体思路与上周相同,但将功率谱密度估计方法由 相关法 改为 直接法
segments_i = buffer(in, winlen, overlap, "nodelay"); % 存放输入信号的分段交叠
segments_o = buffer(out, winlen, overlap, "nodelay"); % 存放输出信号的分段交叠
numSegments = size(segments_i, 2);  % 分段数
 
wd = hanning(winlen);
 
spectrum_Pxx = zeros(winlen/2+1,numSegments);  % 存放每段估计的自功率谱密度
spectrum_Pxy = zeros(winlen/2+1,numSegments);  % 存放每段估计的互功率谱密度
 
for i = 1:numSegments  % 分段估计
 
    % 估计输入信号自功率谱密度
    in_fft = fft(segments_i(:,i).*wd);
    N = length(in_fft);
 
    P1 = abs(in_fft/N);
    P2 = P1(1:floor(N/2)+1);
    P2(2:end-1) = 2*P2(2:end-1);
    Pxx_ = P2.^2/(N*fs); 
 
    % 估计输入、输出信号互功率谱密度
    out_fft = fft(segments_o(:,i).*wd);
    P3 = abs(out_fft/N);
    P4 = P3(1:floor(N/2)+1);
    P4(2:end-1) = 2*P4(2:end-1);
    Pxy_ = P4 .* conj(P2) / (N*fs);
 
    % 每段的功率谱密度存起来
    spectrum_Pxx(:,i) = Pxx_;
    spectrum_Pxy(:,i) = Pxy_;
 
end
 
f = fs*(0:N/2)/N;
 
% 计算均值
spectrumAvg_Pxx = mean(spectrum_Pxx, 2);
spectrumAvg_Pxy = mean(spectrum_Pxy, 2);
 
H2 = abs(spectrumAvg_Pxy) ./ abs(spectrumAvg_Pxx);
subplot(311);
plot(f,20*log10(H2));
title("幅频曲线(自己实现的自功率谱、互功率谱估计)");xlabel("频率");ylabel("db");
 
%% 自带pwelch、cpsd
[Pxx,f1] = pwelch(in, hanning(winlen),overlap,winlen,fs);
[Pxy,f2] = cpsd(in, out, hanning(winlen),overlap,winlen,fs);
 
subplot(312);
plot(f1, 20*log10(abs(Pxy ./ Pxx)));
title("幅频曲线(自带的pwelch、cpsd函数)");xlabel("频率");ylabel("db");
 
%% freqz理想幅频特性曲线
[H3, w] = freqz(b,a);
subplot(313);
 
f1 = w*fs/2/pi;
plot(f1,20*log10(abs(H3)));
title("幅频曲线(理想)");xlabel("频率");ylabel("db");

结果图:


遗留问题:

该示例中使用高阶滤波器后,幅频特性曲线仍会有较大的波动,有待在后续学习中解决。

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

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

相关文章

BUUCTF [BJDCTF2020]EasySearch 1

“.swp” 后缀通常用于表示 Vim&#xff08;一种文本编辑器&#xff09;的交换文件。Vim 是一个强大的文本编辑器&#xff0c;它在编辑文件时会创建交换文件以确保文件内容的安全性。 审阅 访问 index.php.swp 得到源码 <?phpob_start();function get_hash(){$chars ABC…

【PDF】pdf 学习之路

PDF 文件格式解析 https://www.cnblogs.com/theyangfan/p/17074647.html 权威的文档&#xff1a; 推荐第一个连接&#xff1a; PDF Explained &#xff08;译作《PDF 解析》&#xff09; | PDF-Explained《PDF 解析》https://zxyle.github.io/PDF-Explained/ https://zxyle…

缓冲区溢出漏洞预防

什么是缓冲区溢出 组成所有应用程序的程序由缓冲区组成&#xff0c;缓冲区是在内存中分配的临时空间&#xff0c;用于保存数据&#xff0c;直到它们移动到程序的其他部分&#xff0c;缓冲区可以包含的数据字节数最初将在代码开发期间指定&#xff0c;由于没有任何类型的边界检…

UNet网络训练

UNet网络训练 训练资源 构建好UNet网络模型后&#xff0c;需要进行训练。但是训练需要特别多的原始图像和标签图像&#xff0c;对于一般而言这一步特别繁琐&#xff0c;不过在网上有一些免费的数据集可以让我们省略这一步&#xff0c;直接进行训练测试。 VOC&#xff08;Visu…

Centos环境使用Docker安装Kafka

1 Kafka简介 1、kafka是什么&#xff1f; Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者规模的网站中的所有动作流数据&#xff0c;具有高性能、持久化、多副本备份、横向扩展能力。 2、kafka的工作原理[去耦合] Kafka采用的是订阅-发布的模式&am…

Android应用线上闪退问题解决

解决Android应用线上闪退问题需要仔细的监控、调试和分析。以下是一些解决Android线上闪退问题的工具和方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 工具&#xff1a; 1.Google Play 控制台&…

anaconda navigator启动时一直卡在 loading applications 页面

anaconda navigator启动时一直卡在 loading applications 页面 方法1 在安装目录找到D:\anaconda\Lib\site-packages\anaconda_navigator\api 然后打开conda_api.py&#xff0c; 在1358行找到data yaml.load(f)&#xff0c;将其改为data yaml.safeload(f) 猜测为保证代码…

精准对接促合作:飞讯受邀参加市工信局举办的企业供需对接会

2023年9月21日&#xff0c;由惠州市工业和信息化局主办的惠州市工业软件企业与制造业企业供需对接会成功举办&#xff0c;对接会旨在促进本地工业软件企业与制造业企业的紧密合作&#xff0c;推动数字化转型的深入发展。此次会议在市工业和信息化局16楼会议室举行&#xff0c;会…

【校招VIP】产品行测之逻辑计算题

考点介绍&#xff1a; 数理逻辑包括对于统计学有基础的了解&#xff0c;有基础的数据敏感性&#xff0c;拥有从数据层层深挖定位到问题的能力。知道先验概率&#xff0c;置信度&#xff0c;归因方法等基础的统计学概念。作为产品经理都应该去理解这些逻辑&#xff0c;并且思考如…

DirectX12学习笔记-创建窗口

创建窗口就是纯的Win API&#xff0c;我设想的窗口是这样的&#xff1a; 我们调用WinMain启动窗口&#xff0c;然后在WinMain初始化和启动消息循环。 消息会传入OnEvent, WndProc是窗口过程函数&#xff08;每个窗口都有一个WndProc函数&#xff0c;用于接收和处理窗口相关的…

yolov8训练自己的数据集(标注到训练)

yolov8可以用作目标检测&#xff0c;分割&#xff0c;姿态&#xff0c;跟踪。这里举例目标检测从标注到训练的过程。 官网连接 先把代码下载下来&#xff0c;这个不用说了。 然后准备数据集&#xff0c;创建一个文件夹dataset&#xff08;自己命名&#xff09;&#xff0c;下面…

m1芯片-centos安装mysql

在m1芯片中&#xff0c;虚拟机centos7使用mysql官方的yum源安装mysql没问题&#xff0c;但是在启动mysql的时候会报错&#xff0c;从日志上看是硬件问题&#xff0c;报错信息为 Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardwar…

OpenCV项目开发实战--主成分分析(PCA)的特征脸应用(附C++/Python实现源码)

什么是主成分分析? 这是理解这篇文章的先决条件。 图 1:使用蓝线和绿线显示 2D 数据的主要组成部分(红点)。 快速回顾一下,我们了解到第一个主成分是数据中最大方差的方向。第二主成分是空间中与第一主成分垂直(正交)的最大方差方向,依此类推。第一和第二主成分红点(2…

【周赛364-数组】美丽塔 I-力扣 2865

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

SpringBoot统一返回处理和全局异常处理

统一接口返回 前后端分离项目&#xff0c;通常后端会返回给前端统一的数据格式&#xff0c;一般包括code,msg,data信息。 创建返回统一实体类 package com.example.exceptionspring.domain;import lombok.Data;Data public class Result {private Integer code;private Strin…

基于微信小程序的校园二手交易平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言学生的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W…

别问怎么下载,金蝶云星空SaaS BI系统不用下载

国产自研的奥威软件-金蝶云星空SaaS BI&#xff0c;不下载不安装&#xff0c;从浏览器上一键注册登录即可使用&#xff1a;一键点击下载金蝶云星空方案&#xff0c;执行后&#xff0c;BI系统将基于金蝶云星空内的数据与方案自带的BI报表&#xff0c;智能计算分析指标&#xff0…

python模拟斐波那契数列输出

用户输入指定的数列范围&#xff0c;正确输出结果。 源代码&#xff1a; def fiebo(n): a 1 b 1 for i in range(n): if i 0: print(a, end" ") elif i 1: print(b, end" ") else: …

yolov8模型训练遇到的问题

训练时有一种报错&#xff1a;no labels found in xxx.cache 首先要确定我们的图像&#xff0c;标签文件夹内容无误。检查完后如果还不行&#xff0c;就看看训练用到的东西&#xff0c;比如dataset.py&#xff0c;部分代码如下&#xff1a; def get_labels(self):""…

中国社科院大学-美国杜兰大学金融管理硕士暨能源管理硕士项目2023年毕业典礼

中国社科院大学-美国杜兰大学金融管理硕士暨能源管理硕士项目2023年毕业典礼 2023年9月16日&#xff0c;中国社会科学院大学-美国杜兰大学金融管理硕士项目暨能源管理硕士项目2023年毕业典礼在我校望京校区成功举办。 张波副校长致辞 中国社会科学院大学副校长张波教授、杜兰大…