离散传递函数实现(滤波器实现)

news2024/11/24 18:26:39

GPT讲挺好:
离散传递函数的一般形式为:
G ( z ) = b 0 z n + b 1 z ( n − 1 ) + . . . + b n a 0 z n + a 1 z ( n − 1 ) + . . . + a m G(z)=\frac{b_0z^n + b_1z^{(n-1)} + ... + b_n}{a_0z^{n} + a_1z^{(n-1)} + ... + a_m} G(z)=a0zn+a1z(n1)+...+amb0zn+b1z(n1)+...+bn
其中,b0、b1、…、bn是分子系数,a0、a1、…、am是分母系数,n和m分别是分子和分母的最高次幂。
差分方程的形式是:
y [ n ] = ( b 0 x [ n ] + b 1 ∗ x [ n − 1 ] + . . . + b n ∗ x [ n − n ] ) − ( a 1 ∗ y [ n − 1 ] + a 2 ∗ y [ n − 2 ] + . . . + a m ∗ y [ n − m ] ) y[n] = (b_0x[n] + b_1*x[n-1] + ... + b_n*x[n-n]) - (a_1*y[n-1] + a_2*y[n-2] + ... + a_m*y[n-m]) y[n]=(b0x[n]+b1x[n1]+...+bnx[nn])(a1y[n1]+a2y[n2]+...+amy[nm])
其中,x[n]是输入信号的当前样本,x[n-1]、x[n-2]、…、x[n-n]是输入信号的历史样本,y[n]是输出信号的当前样本,y[n-1]、y[n-2]、…、y[n-m]是输出信号的历史样本。

要实现离散传递函数,您可以定义一个函数,将输入信号和历史输入/输出作为参数传递给该函数,并在函数内部使用差分方程计算输出。在每个时间步长中,您需要更新历史输入/输出的值,以便在下一个时间步长使用。

示例伪代码:

function discreteTransferFunction(input, x, y)
    // 系数
    b = [b0, b1, ..., bn]  // 分子系数
    a = [a0, a1, ..., am]  // 分母系数

    // 计算输出
    output = (b[0]*input + b[1]*x[0] + ... + bn*x[n]) - (a[1]*y[0] + a[2]*y[1] + ... + am*y[m])

    // 更新历史输入和输出
    for i = n-1 to 1 do
        x[i] = x[i-1]
    end for
    x[0] = input

    for i = m-1 to 1 do
        y[i] = y[i-1]
    end for
    y[0] = output

    return output
end function

通过将输入信号的每个样本依次传递给discreteTransferFunction函数,并跟踪历史输入和输出,您可以获得离散传递函数的输出序列。

请注意,实际的实现可能需要添加错误检查和其他边界条件处理,以确保算法的正确性和稳定性。
对于陷波器离散传递函数,给出cpp实现
在这里插入图片描述


double notchFilter(double input, std::vector<double>& x, std::vector<double>& y)
{
    // 系数
    double b[3] = { 0.9099, -1.075, 0.1887 };
    double a[3] = { 1.0, -1.075, 0.09856 };

    // 计算输出
    double output = b[0] * input + b[1] * x[0] + b[2] * x[1]
        - a[1] * y[0] - a[2] * y[1];

    // 更新历史输入和输出
    x[1] = x[0];
    x[0] = input;
    y[1] = y[0];
    y[0] = output;

    return output;
}

int main()
{
    // 输入信号
    std::vector<double> inputSignal = { 1.0, 2.0, 3.0, 4.0, 5.0 };
    // 输出信号
    std::vector<double> outputSignal(inputSignal.size(), 0.0);
    // 历史输入和输出
    std::vector<double> x = { 0.0, 0.0 };
    std::vector<double> y = { 0.0, 0.0 };

    // 应用离散传递函数
    for (size_t i = 0; i < inputSignal.size(); i++)
    {
        outputSignal[i] = notchFilter(inputSignal[i], x, y);
    }

    // 输出结果
    for (size_t i = 0; i < outputSignal.size(); i++)
    {
        std::cout << "Output at sample " << i << ": " << outputSignal[i] << std::endl;
    }

    return 0;
}

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

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

相关文章

【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

目录 前言 使用场景 原理 环境准备 开发 First Script WebDriver API 浏览器 元素 总结 前言 Selenium是一款可以自动化操作浏览器的开源项目&#xff0c;最初的目的是浏览器功能的自动化测试&#xff0c;但是随着项目的发展&#xff0c;人们根据它的特性也用来做一些…

k8s 配置hadoop集群,nfs作为存储

目录 一、简介 二、nfs服务&nfs-provisioner配置 1、k8S服务器需安装nfs客户端 2、nfs服务端安装配置 3、使用nfs-provisioner动态创建PV &#xff08;文件已修改&#xff09; 三、hadoop配置文件 1、# cat hadoop.yaml 2、# cat hadoop-datanode.yaml 3、# cat …

fprintf 和 fscanf 、 fscanf和fgets的区别

一、fprintf与fscanf应用 #include <stdio.h> #include <windows.h>void write(){FILE *fp fopen("abc.c" , "w");if(!fp){perror("fopen error");return;}fprintf(fp , "%d%c%d%d\n",10,*,8,10*8);fclose(fp); }void r…

银行项目软件测试中都测哪些内容?怎么测

在我们的日常在金融或银行软件测试工作中都有哪些内容需要测试&#xff1f;在这些测试的内容中如何去更好的掌握测试技能保证测试质量&#xff0c;一起来学习探讨交流。 下面为银行测试点的概括&#xff1a; 根据上图&#xff0c;我们可以从以下几个方面重点关注&#xff1a; …

一些原理图设计最佳实践

要画出清晰、可读性好和整洁的电路原理图&#xff0c;应该遵守以下一般规范&#xff1a; 使用专业的绘图软件&#xff1a;使用专业的电路设计软件&#xff0c;如KiCad、Eagle、Altium Designer、OrCAD等&#xff0c;这些软件提供了丰富的元件库和绘图工具&#xff0c;可以轻松创…

使用POI实现JAVA操作Excel文件

1、POI工具介绍 1.1、POI 是用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 1.2、主要是运用其中读取和输出excel的功能。 1.3、POI官网地址&#xff1a; https://poi.apache.org/components/i…

2021 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题

2021 年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题 一. 逻辑推理&#xff1a;第 26~55 小题&#xff0c;每小题 2 分&#xff0c;共 60 分。下列每题给出的 A、B、C、D、E 五个选项中&#xff0c;只有一项是符合试题要求的。 26.哲学是关于世界观、方法论的学问。哲…

SEC的尴尬,无法找到行踪飘忽不定的“华人首富”

圈内很多有&#xff0c;也许会有这样一幅画面。“哎呀&#xff0c;他到底跑哪儿去了&#xff1f;”美国证券交易委员会SEC主席Gensler气得拍着桌子&#xff0c;旁边还放着长达136页的对币安的起诉文件。这可真是让人头疼啊&#xff01;毕竟赵长鹏最近几年一直神出鬼没&#xff…

Mybatis学习笔记二

目录 一、MyBatis的各种查询功能1.1 查询一个实体类对象1.2 查询一个List集合1.3 查询单个数据1.4 查询一条数据为map集合1.5 查询多条数据为map集合1.5.1 方法一&#xff1a;1.5.2 方法二&#xff1a; 二、特殊SQL的执行2.1 模糊查询2.2 批量删除2.3 动态设置表名2.4 添加功能…

现代图片性能优化: 懒加载及异步图像解码方案

图片的懒加载 懒加载是一种网页性能优化的常见方式&#xff0c;它能极大的提升用户体验。到今天&#xff0c;现在一张图片超过几 M 已经是常见事了。如果每次进入页面都需要请求页面上的所有的图片资源&#xff0c;会较大的影响用户体验&#xff0c;对用户的带宽也是一种极大的…

【id:76】【20分】B. 商旅信用卡(多重继承)

题目描述 某旅游网站&#xff08;假设旅程网&#xff09;和某银行推出旅游综合服务联名卡—旅程信用卡&#xff0c;兼具旅程会员卡和银行信用卡功能。 旅程会员卡&#xff0c;有会员卡号&#xff08;int&#xff09;、旅程积分&#xff08;int&#xff09;&#xff0c;通过会员…

Spring Cloud Kubernetes详解

目录 一、 为什么你需要 Spring Cloud Kubernetes&#xff1f; 二、 Starter 三、 用于 Kubernetes 的 DiscoveryClient 四、Kubernetes 原生服务发现&#xff08;service discovery&#xff09; 五、Kubernetes PropertySource 的实现 1、使用 ConfigMap PropertySource …

ssg标识符

1. 关键字&#xff08;keyword&#xff09; 定义&#xff1a;被Java语言赋予了特殊含义&#xff0c;用做专门用途的字符串&#xff08;或单词&#xff09; HelloWorld案例中&#xff0c;出现的关键字有 class、public 、 static 、 void 等&#xff0c;这些单词已经被Java定义…

【appium】appium自动化入门之API(上)

这个系列预计会讲启动APP—元素定位—初步使用—API命令详解 本系列没提过的知识点也不用急&#xff0c;大家可以点击文末小卡片进群来一起交流 目录 第 2 章 初步使用 2.1 启动 app&#xff08;淘宝&#xff09; 前言 2.1.1 下载 aapt 2.1.2 获取 apk 包名 2.1.3 获取 launch…

Linux之通配符、引号的使用

目录 Linux之通配符、引号的使用 通配符 定义 范围 用法及含义 案例 引号使用 案例 Linux之通配符、引号的使用 通配符 定义 通配符是一种特殊语句&#xff0c;主要有星号(*)、问号(?)等表示&#xff0c;用来模糊搜索文件&#xff0c;当查找目录或文件时&#xff0c;…

Gin微服务框架_golang web框架_完整示例Demo

Gin简介 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 Gin是一个golang的微框架&#xff0c;封装比较优雅&#xff0c;API友好&#xff0c;源码注释比较明确&#xff0c;具有快速灵活&…

Spark入门

Spark概述 1.1 什么是Spark 回顾&#xff1a;Hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 Hadoop与Spark历史 MR是进程模型&#xff0c;ResourceManager NodeManager都是进程&…

107-Spring的底层原理(上篇)

Spring的底层原理 之前说明的都是Spring的应用&#xff08;64章博客开始&#xff08;包括其后面的相关博客&#xff09;&#xff09;&#xff0c;现在来说明他为什么可以那样做 在说明之前&#xff0c;这里需要对64章博客中的spring的了解需要再次的说明&#xff1a; Spring…

Unity中UI方案。IMGUI、UIElement、UGUI、NGUI

引言 unity中有很多ui方案&#xff0c;各种方案有什么优势劣势&#xff0c;这里一一列举一下&#xff0c;知识扩充一下。 UI方案适用范围IMGUI仅用于Editor扩展&#xff0c;或运行时DebugUIElement可用于发布运行时和EditorUGUIRuntime&#xff0c;两大主流 UI 解决方案之一NG…

python语法-MySQL数据库(综合案例:读取文件,写入MySQL数据库中)

python语法-MySQL数据库 综合案例&#xff1a;读取文件&#xff0c;写入MySQL数据库中 &#xff08;项目数据见文章末参考内容&#xff09; 解析&#xff1a; sql代码如下&#xff1a; create database pysql charset utf8;use pysql;select database();create table orders…