Skip to content
LIBRARY
DiscreteDerivative.md

DiscreteDerivative ​

Discrete-time derivative filter, corresponding to the transfer function

where is the sample time.

Usage ​

DiscreteComponents.DiscreteDerivative(k=1)

Parameters: ​

NameDescriptionUnitsDefault value
Ts–SampleTime()
initialization–DiscreteCom...t(; y0=0.0)
kGain–1

Connectors ​

  • u - This connector represents a real signal as an input to a component (RealInput)

  • y - This connector represents a real signal as an output from a component (RealOutput)

Behavior ​

Source ​

dyad
"""
Discrete-time derivative filter, corresponding to the transfer function
```math
Y(z) = k \\dfrac{z - 1}{T_s z} U(z)
```

where ``T_s`` is the sample time.
"""
component DiscreteDerivative@[input clk extends Discrete]
  "Input signal"
  u = RealInput@[clk]() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": -100, "y1": 450, "x2": 0, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Output signal"
  y = RealOutput@[clk]() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 1000, "y1": 450, "x2": 1100, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  structural parameter Ts::Real = SampleTime()
  "Gain"
  parameter k::Real = 1
  structural parameter initialization::InitialCondition = DiscreteComponents.InitialCondition.InitialOutput(y0 = 0.0)
relations
  y@clk = k * (u@clk - u@(clk-1)) / Ts
  switch initialization
    case InitialOutput
      initial u@(clk-1) = -(Ts / k * initialization.y0 - u@clk)
    case SteadyState
      initial u@(clk-1) = u@clk
    case InitialState
      initial u@(clk-1) = initialization.x0
  end
metadata {
  "Dyad": {"icons": {"default": "dyad://DiscreteComponents/DiscreteDerivative.svg"}}
}
end
Flattened Source
dyad
"""
Discrete-time derivative filter, corresponding to the transfer function
```math
Y(z) = k \\dfrac{z - 1}{T_s z} U(z)
```

where ``T_s`` is the sample time.
"""
component DiscreteDerivative
  "Input signal"
  u = RealInput@[clk]() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": -100, "y1": 450, "x2": 0, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  "Output signal"
  y = RealOutput@[clk]() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 1000, "y1": 450, "x2": 1100, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  structural parameter Ts::Real = SampleTime()
  "Gain"
  parameter k::Real = 1
  structural parameter initialization::InitialCondition = DiscreteComponents.InitialCondition.InitialOutput(y0 = 0.0)
relations
  y@clk = k * (u@clk - u@(clk-1)) / Ts
  switch initialization
    case InitialOutput
      initial u@(clk-1) = -(Ts / k * initialization.y0 - u@clk)
    case SteadyState
      initial u@(clk-1) = u@clk
    case InitialState
      initial u@(clk-1) = initialization.x0
  end
metadata {
  "Dyad": {"icons": {"default": "dyad://DiscreteComponents/DiscreteDerivative.svg"}}
}
end


Test Cases ​

No test cases defined.

  • Examples

  • Experiments

  • Analyses