切比雪夫滤波器

function chebyshevPolynomial(n, x) {if (n === 0) {return 1;} else if (n === 1) {return x;} else {return 2 * x * chebyshevPolynomial(n - 1, x) - chebyshevPolynomial(n - 2, x);}
}
// 切比雪夫滤波器
function chebyshevFilter(order, cutoffFrequency, ripple, inputSignal) {const eps = Math.sqrt(Math.pow(10, ripple / 10) - 1);const scaleFactor = 1 / Math.cosh(order * Math.acosh(1 / eps));const outputSignal = [];for (let i = 0; i < inputSignal.length; i++) {const normalizedFrequency = inputSignal[i] / cutoffFrequency;const chebyshevValue = chebyshevPolynomial(order, scaleFactor * normalizedFrequency);const gain = 1 / Math.sqrt(1 + Math.pow(eps * chebyshevValue, 2));outputSignal.push(inputSignal[i] * gain);}return outputSignal;
}
// 示例
const inputSignal = [1, 0, -1, 0, 1, 0, -1, 0, 1]; // 一个简单的输入信号
const order = 4; // ?采样频率
const cutoffFrequency = 0.3; // 截止频率
const ripple = 1; // 纹波值
const filteredSignal = chebyshevFilter(order, cutoffFrequency, ripple, inputSignal);
console.log(filteredSignal);

巴特沃斯滤波器

function butterworthFilter(input, order, cutoffFrequency, samplingFrequency) {// 计算必要的值var w = 2 * Math.PI * cutoffFrequency / samplingFrequency; // 计算数字滤波器的截止频率var alpha = Math.sin(w) / (2 * Math.pow(Math.E, Math.log(2) / 2 * order)); // 计算alpha值// 创建滤波器系数var a = [];var b = [];for (var i = 0; i <= order; i++) {var theta = Math.PI / 2 + (2 * i + 1) * Math.PI / (2 * order + 2);var s = alpha * Math.sin(theta);var aCoeff = -2 * Math.cos(w) / (1 + s * s);var bCoeff = (1 - s) / (1 + s);a.push(aCoeff);b.push(bCoeff);}// 初始化变量var output = []; // 存储输出信号的数组var inputHistory = []; // 存储输入历史数据的数组var outputHistory = []; // 存储输出历史数据的数组for (var i = 0; i < order; i++) {inputHistory.push(0);outputHistory.push(0);}// 过滤输入数据for (var i = 0; i < input.length; i++) {var inputValue = input[i];var outputValue = b[0] * inputValue;for (var j = 0; j < order; j++) {outputValue += b[j + 1] * inputHistory[j] - a[j + 1] * outputHistory[j];}output.push(outputValue);inputHistory.unshift(inputValue);inputHistory.pop();outputHistory.unshift(outputValue);outputHistory.pop();}return output; // 返回经过滤波器处理后的输出信号
}
// 创建一个输入信号(在0到1之间的10个随机数)
var inputSignal = [1, 0, -1, 0, 1, 0, -1, 0, 1];
// for (var i = 0; i < 10; i++) {//   inputSignal.push(Math.random());
// }
// 设置巴特沃斯滤波器参数
var order = 2;
// 滤波器阶数
var cutoffFrequency = 0.2;
// 截止频率(以采样频率的一半为单位)
var samplingFrequency = 1;
// 采样频率(Hz)
// 调用巴特沃斯滤波器函数
var outputSignal = butterworthFilter(inputSignal, order, cutoffFrequency, samplingFrequency);
// 输出结果
console.log("输入信号:", inputSignal);
console.log("输出信号:", outputSignal);

贝塞尔低通滤波器

function besselPolynomial(n, x) {if (n === 0) {return 1;} else if (n === 1) {return x;} else {return ((2 * (n - 1) * x * besselPolynomial(n - 1, x)) - besselPolynomial(n - 2, x)) / n;}
}
// 计算阶数为order的贝塞尔低通滤波器的传递函数的增益
function besselFilterGain(order, frequencyRatio) {const besselValue = besselPolynomial(order, frequencyRatio);return 1 / (1 + besselValue);
}
// 贝塞尔滤波器
function besselFilter(order, cutoffFrequency, inputSignal) {const outputSignal = [];for (let i = 0; i < inputSignal.length; i++) {const normalizedFrequency = inputSignal[i] / cutoffFrequency;const gain = besselFilterGain(order, normalizedFrequency);outputSignal.push(inputSignal[i] * gain);}return outputSignal;
}
// 示例
const inputSignal = [1, 0, -1, 0, 1, 0, -1, 0, 1]; // 一个简单的输入信号
const order = 4;
const cutoffFrequency = 0.3;
const filteredSignal = besselFilter(order, cutoffFrequency, inputSignal);
console.log(filteredSignal);

js 切比雪夫多项式实现相关推荐

  1. 正交多项式族(勒让德多项式跟切比雪夫多项式)理论

    简述 这里显示两种,分别是,勒让德多项式跟切比雪夫多项式 勒让德多项式 区间是 x∈[−1,1]x\in[-1, 1]x∈[−1,1],权函数为ρ(x)≡1\rho(x)\equiv1ρ(x)≡1 P ...

  2. 拉格朗日插值--11次切比雪夫多项式零点作为节点Python实现并计算误差

    目标函数 y=11+x2y=11+x2 y = \frac{1}{1+x^2} 条件 通过拉格朗日进行插值但是通过所给的节点的不同,会导致插值的效果也不同. 下面方法采用的是用等距节点来实现插值效果. ...

  3. 切比雪夫多项式c语言csdn,切比雪夫多项式

    切比雪夫多项式 切比雪夫多项式是与棣美弗定理有关,以递归方式定义的一系列正交多项式序列. 通常,第一类切比雪夫多项式以符号Tn表示, 第二类切比雪夫多项式用Un表示.切比雪夫多项式 Tn 或 Un 代 ...

  4. Python处理第一类切比雪夫多项式

    第一类切比雪夫多项式简介 Chebyshev多项式是一种非常重要的正交多项式,在逼近理论中有重要应用,第一类切比雪夫多项式的根可用于多项式插值,对弥补龙格现象有很大的帮助.其表达形式为 Tn=cos⁡ ...

  5. 已知:切比雪夫多项式如下:编写一段程序,输入n,x,并将0-n的所有Tn(x)的值输出导到文件tdat.txt中。

    已知:切比雪夫多项式如下: Tn(x)=               1                (n=0) x                (n=1) 2xTn-1(x)-Tn-2(x)  ...

  6. matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)

    来源:cnblogs 在<自适应天线与相控阵>这门课中,了解到了关于理想低副瓣阵列设计的一些方法,其中切比雪夫等副瓣阵列设计方法是一种基础的方法,故将其设计流程写成maltab程序供以后学 ...

  7. 切比雪夫插值多项式在非线性电路中的应用与比较

    切比雪夫插值多项式的原理和方法 以及与小信号分析法的比较 1.切比雪夫多项式计算方法: 计算方法和流程图 求解N阶切比雪夫插值多项式时其过程为: (1) 利用输入函数的静态工作点I1Q和变化范围(m ...

  8. 切比雪夫1型滤波器C语言,切比雪夫1型滤波器.doc

    实用标准文案 精彩文档 目录 课题描述--------------------------1 设计原理--------------------------1 滤波器的分类--------------- ...

  9. 切比雪夫不等式证明及应用

    切比雪夫不等式证明及应用 1 背景 2 定义 3 预备知识 3.1 连续型随机变量及其概率密度 3.2 定积分保号性 4 证明 5 应用 6 参考文献 切比雪夫(1821~1894),俄文原名Пафн ...

最新文章

  1. 2016/01/13开始学习git:分支管理:Bug分支
  2. 利用IIS的配置“此资源内容来自共享”实现负载均衡
  3. 你以为没有CAD的前辈们画不出复杂的图纸?
  4. 函数伪代码_Excel常用函数
  5. 天池 在线编程 圣杯咒语
  6. gdc服务器系统备份和还原,FANUC镜像系统如何备份及恢复
  7. 机器学习中的距离/散度/熵
  8. CAD坐标标注中如何标注普通坐标?
  9. 图书租赁管理系统 图书馆借书还书 计算机毕设项目
  10. 第二日(1)一个IDA下载地址
  11. tp1900芯片对比7621a_TP-LINK WDR7660千兆版 厉害了单芯片TP1900-路由器交流
  12. 华为高层谈 35 岁危机,程序员如何破年龄之忧?
  13. 计算机名词解释高级筛选,高级筛选什么意思?
  14. 【蓝桥杯】枚举,模拟,排序专题 (一)
  15. 基于linux网络流量监控与分析软件的设计与实现shell,Shell图形化监控网络流量
  16. 真正解决Word中表格首行字母或首列字母(首字母)大写的问题
  17. maven-resources-plugin报红
  18. 利用树莓派搭建家庭NAS简要
  19. 基于asp.net网上论坛BBS毕业设计
  20. PHP中in_array 效率及其优化

热门文章

  1. vue3源码系列之计算属性computed原理剖析
  2. 基于VUE的后台管理系统
  3. Eclipse中文语言包安装和设置中文
  4. 【金猿信创展】恒生电子——全栈式信创解决方案,助力金融信创行稳致远
  5. 找不到com.sun.beans.introspect.PropertyInfo的类文件问题
  6. Sublime的实用汉化方法
  7. “标签化”思想在分布式系统中的应用
  8. 索骥馆-编程语言之《算法引论-一种创造性方法》扫描版[PDF]
  9. 顺应EMM趋势,烽火星空重磅出击
  10. 地理坐标系,投影坐标系区别