Holding the last value of input signal instead of first value as the zero order hold does

21 次查看(过去 30 天)
I want to hold the last value in the time period instead of first one. how can I do that?? The 'zero order hold ' block holds the first value in the time period for the entire time period.
  4 个评论
Jonas
Jonas 2022-6-29
what exactly is your input signal? can you show an example of input and output you want to have? is this all resitrcted to Simulink or can we use normal Matlab?
shazma shazma
shazma shazma 2022-6-29
Here is an example of simulink block diagram, I want to add two signals of different sampling rate i.e 0.1 sec and 1 sec, but I want the summer to calculate output after sampling time of 1 sec instead of 0.1 sec. After every sampling time of 1 second the running sum of the 1st signal(sampling time 0.1) is to be added to the 2nd signal. The plot shows the output of running sum of 1st signal, at the time instant of 1 sec I want the running sum value of 4 to be summed with the 2nd signal. Should I use some other block instead of normal sum block for finding sum at discrete events??
one solution I tried is to use ZOH after running sum to hold its output for sample time of 1 sec but that adds one sampling time delayed running sum to the 2nd signal, as ZOH holds the first value of the sampling time.

请先登录,再进行评论。

回答(1 个)

Gautam
Gautam 2024-2-19
Hi Shazma,
I understand that you intend to add two signals with different sample times using the Simulink “add” block, such that the output signal is produced at certain time instances.
The desired output can be achieved using a “triggered subsystem”. A triggered subsystem runs the internal blocks whenever a trigger condition is met.
In the image above, the subsystem “Sum” is a triggered subsystem that produces the sum of the two input signals whenever the trigger condition is met by the “Trigger Signal”.
The “Trigger Signal” is a rectangular pulse with a time period of 1 sec and 50% duty cycle.
The “Sum” subsystem produces an output whenever the subsystem encounters a rising edge (transition from the value “0” to value “1”) in the “Trigger Signal” which happens at a time interval of 1 sec.
You can make a triggered subsystem by adding a “Trigger” block from “Simulink/Ports and Subsystems” library as in the image below.
By default, the “trigger type” parameter of the block is set to “rising”.
Below is the output of the model that produces the sum of the two input signals at time intervals of 1 sec.
The plot in red is the output and the plots in yellow and blue are the input signals with sample time of 0.1 sec and 1 sec respectively.
You can find more information about triggered subsystems from the MathWorks Documentation page linked below
Triggers in MATLAB & Simulink:
https://www.mathworks.com/help/releases/R2019b/simulink/slref/trigger.html?searchHighlight=trigger&s_tid=doc_srchtitle
Thank You,
Gautam Murthy

类别

Help CenterFile Exchange 中查找有关 Sources 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by