C# 50Hz陷波器实现类

class bandStop50Hz

{         // Block signals and states (auto storage) for system ‘<Root>‘

public struct DW         {

public double Delay11_DSTATE;               /* ‘<S1>/Delay11‘ */

public double Delay21_DSTATE;               /* ‘<S1>/Delay21‘ */

public double Delay12_DSTATE;               /* ‘<S1>/Delay12‘ */

public double Delay22_DSTATE;               /* ‘<S1>/Delay22‘ */

}

//External inputs (root inport signals with auto storage)

public struct ExtU

{           public double Input;                        /* ‘<Root>/Input‘ */

}

/* External outputs (root outports fed by signals with auto storage) */

public struct ExtY         {           public double Output;                        /* ‘<Root>/Output‘ */

}

/* Block signals and states (auto storage) */

public DW rtDW;

/* External inputs (root inport signals with auto storage) */

public ExtU rtU;

/* External outputs (root outports fed by signals with auto storage) */

public ExtY rtY;

public void bandstop50Hzat1k0_step()

{           double rtb_Delay11;           double rtb_SumA31;           double rtb_Delay12;           double rtb_SumA32;

/* Delay: ‘<S1>/Delay11‘ */           rtb_Delay11 = rtDW.Delay11_DSTATE;

/* Sum: ‘<S1>/SumA31‘ incorporates:            *  Delay: ‘<S1>/Delay11‘            *  Delay: ‘<S1>/Delay21‘            *  Gain: ‘<S1>/a(2)(1)‘            *  Gain: ‘<S1>/a(3)(1)‘            *  Gain: ‘<S1>/s(1)‘            *  Inport: ‘<Root>/Input‘            *  Sum: ‘<S1>/SumA21‘            */

rtb_SumA31 = (0.995566971680792 * rtU.Input - -1.8908514634621669 *                         rtDW.Delay11_DSTATE) - 0.991033147905415 * rtDW.Delay21_DSTATE;

/* Delay: ‘<S1>/Delay12‘ */           rtb_Delay12 = rtDW.Delay12_DSTATE;

/* Sum: ‘<S1>/SumA32‘ incorporates:            *  Delay: ‘<S1>/Delay11‘            *  Delay: ‘<S1>/Delay12‘            *  Delay: ‘<S1>/Delay21‘            *  Delay: ‘<S1>/Delay22‘            *  Gain: ‘<S1>/a(2)(2)‘            *  Gain: ‘<S1>/a(3)(2)‘            *  Gain: ‘<S1>/b(2)(1)‘            *  Gain: ‘<S1>/s(2)‘            *  Sum: ‘<S1>/SumA22‘            *  Sum: ‘<S1>/SumB21‘            *  Sum: ‘<S1>/SumB31‘            */

rtb_SumA32 = (((-1.9021505794142433 * rtDW.Delay11_DSTATE + rtb_SumA31) +                          rtDW.Delay21_DSTATE) * 0.995566971680792 - -1.8965480696203423 *                         rtDW.Delay12_DSTATE) - 0.99127405848172945 * rtDW.Delay22_DSTATE;

/* Outport: ‘<Root>/Output‘ incorporates:            *  Delay: ‘<S1>/Delay12‘            *  Delay: ‘<S1>/Delay22‘            *  Gain: ‘<S1>/b(2)(2)‘            *  Sum: ‘<S1>/SumB22‘            *  Sum: ‘<S1>/SumB32‘            */

rtY.Output = (-1.9021505794142433 * rtDW.Delay12_DSTATE + rtb_SumA32) +             rtDW.Delay22_DSTATE;

/* Update for Delay: ‘<S1>/Delay11‘ */

rtDW.Delay11_DSTATE = rtb_SumA31;

/* Update for Delay: ‘<S1>/Delay21‘ */

rtDW.Delay21_DSTATE = rtb_Delay11;

/* Update for Delay: ‘<S1>/Delay12‘ */

rtDW.Delay12_DSTATE = rtb_SumA32;

/* Update for Delay: ‘<S1>/Delay22‘ */

rtDW.Delay22_DSTATE = rtb_Delay12;         }

public void initialize()

{           rtDW.Delay11_DSTATE = 0.0;

rtDW.Delay21_DSTATE = 0.0;

rtDW.Delay12_DSTATE = 0.0;

rtDW.Delay22_DSTATE = 0.0;

rtU.Input = 0.0;

rtY.Output = 0.0; //optional;

}

}

时间: 2024-10-15 16:09:25

C# 50Hz陷波器实现类的相关文章

【matlab】陷波器的设计

源代码: %陷波器的设计 %陷波器的传输函数为 %        B(1/z)       (z-exp(j*2*pi*f0))*(z-exp(-j*2*pi*f0)) %H(z) = -------- =  -------------------------------------------- %        A(1/z)      (z-a*exp(j*2*pi*f0))*(z-a*exp(-j*2*pi*f0)) %其中f0为陷波器要滤除信号的频率,a为与陷波器深度相关的参数,a越大,

窄带陷波滤波器(Notch filter)

陷波滤波器指的是可以将某一频率迅速衰减的滤波器. 在伺服控制领域比较常用来抑制控制系统的共振点,通过对共振点精确的频率陷波,既消除了振动又不影响控制效果. 在衡量一个陷波器对伺服系统的影响时,重点关注的参数一般有三个: (1)陷波频率(单位HZ) (2)陷波深度(单位dB) (3)陷波宽度(单位HZ) 窄带陷波滤波器相对普通陷波器而言,陷波宽度很小,形象的比喻就是针对共振点精确抑制.同时能最大程度减小对伺服控制的影响.较为理想的陷波器应该具有较大的陷波深度,宽度较窄,同时相位偏移影响尽量小等.

WorldWind源码剖析系列:图层管理器按钮类LayerManagerButton和菜单条类MenuBar

WorldWindow用户定制控件类中所包含的的可视化子控件主要有:图层管理器按钮类LayerManagerButton和菜单条类MenuBar.BmngLoader类中所包含的的可视化子控件主要有:WindowsControlMenuButton,该类也派生自抽象类MenuButton.注意:PluginSDK工程中包含了WidgetMenuButton.cs文件,该工程的Widgets文件夹下面也包含了WidgetMenuButton.cs文件,前者在整个工程中并未被引用,被废弃了. 这些可

Java类载入器(一)——类载入器层次与模型

类载入器 ??虚拟机设计团队把类载入阶段中的"通过一个类的全限定名来获取描写叙述此类的二进制字节流"这个动作放到Java虚拟机外部去实现.以便让应用程序自己决定怎样去获取所须要的类.实现这个动作的代码模块称为"类载入器". 类载入器层次(等级) ??从JVM的角度来讲,仅仅存在两种不同的类载入器. ??第一类是启动类载入器(Bootstrap ClassLoader):这个类载入器主要载入JVM自身工作须要的类.这个类载入器由C++语言实现(特指HotSpot).是

Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析

上一章,我们分析Node类的源码,在Node类里面耦合了一个 Scheduler 类的对象,这章我们就来剖析Cocos2d-x的调度器 Scheduler 类的源码,从源码中去了解它的实现与应用方法. 直入正题,我们打开CCScheduler.h文件看下里面都藏了些什么. 打开了CCScheduler.h 文件,还好,这个文件没有ccnode.h那么大有上午行,不然真的吐血了, 仅仅不到500行代码.这个文件里面一共有五个类的定义,老规矩,从加载的头文件开始阅读. #include <funct

18._5索引器在类中的使用

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _18._5索引器在类中的使用 { class Program { public class indexText //访问类实例 { private int[] array = new int[10]; public int this[int in

函数装饰器和类装饰器实现单例类

单例类,指的是这个类只能创建一个实例,创建完成后,其他类实例都无法再创建.今天我们来看一下,使用函数装饰器和类装饰器怎么实现这种特殊一点的类. 函数装饰器实现 装饰器算是类里面比较难的内容之一,但是实际上它的思想并不复杂.简单点说,就是在你原来内容的基础上,在外面给你加点东西,实现类似装饰的效果.但是它是怎么实现的呢?一般来说,都是通过拦截函数调用来实现的,比如:用装饰器装饰函数的时候,它拦截函数调用,装饰类的时候,它拦截类实例的创建调用,即拦截类初始化__init__函数.知道这个原理以后,我

类加载器、类初始化

类的加载过程 1. 装载:查找并加载类的二进制数据 2. 链接: (1) 验证:确保被加载类的正确性 (2) 准备:为类的静态变量分配内存,并将其初始化为默认值 (3) 解析:把类中的符号引用转换为直接引用 3. 初始化:为类的静态变量赋予正确的初始值 类什么时候被初始化 创建类的实例,也就是new一个对象 访问某个类或接口的静态变量,或对该静态变量赋值 调用类的静态方法 反射 初始化一个类的子类(会首先初始化子类的父类) JVM启动时标明的启动类,即文件名和类名相同的那个类 类的初始化步骤 如

音乐播放器设计类图

按图索骥---软件的设计图纸 1.用例图: 定义:选用播放器的用户与播放器的关系: 用例准则:描述用户一系列的动作: 参与者准则:与播放器交互的任何人: 2. 类图 定义:类图展示的系统中的类,类之间的相互关系,类的方法和属性. 理解:根据用例图,可以基本上设计出系统的类和他们的之间的关系.类图描述的就是类的静态结构3.音乐播放类