Unit Delay block is supposed to be NOT a DIRECT FEEDTHROUGH But in documentation it is said YES

In algebraic loop descrption here it is mentioned that:
"Examples of blocks that do not have direct feedthrough include the Integrator block and the Unit Delay block."
But
if we see in the"help" of Unit Delay block it says YES it is a direct feedthrough block. (see the snapshot of Unit Delay help)

 Risposta accettata

The Delay Block and the Unit Delay Block are subtly complicated especially with regard to Direct Feedthrough.
Whether or not Direct Feedthrough is present depends how the block is configured and which input is being discussed as having Direct Feedthrough.
If the delay length will definitely be one or greater, and the frame-based processing mode is not used, then the main data input port (aka first input) will not involve direct feedthrough. But there may be direct feedthrough for other input ports such as Reset.
If the delay length can be zero or if the delay length can be less than the frame length, then direct feedthrough from the main input would happen.
I believe the document image you showed is just saying Yes, direct feedthrough can happen in SOME configurations. This confusion is a consequence of the subtle complications of the blocks.
FYI: For the Delay Block, take a look at the parameter Prevent direct feedthrough to make sure the main input will not have direct feedthrough. This should enforce a minimum delay length that will make direct feedthrough on the main input port impossible.

4 Commenti

That makes sense.
The documentation of Block Characteristics (Delay block) should then mention that Direct Feedthrough is both YES/NO depending on how are the block parameters set and what are the inputs that are relevant. Otherwise just providing an overarching description (the block characteristic of Delay block) as YES for Direct Feedthrough is clearly misleading.
For sure the Delay block can have direct feedthrough depending on how the block is configured. For example, the block allows for the Delay Length parameter to be 0.
However, I couldn't find any way to configure the Unit Delay such that it would have direct feedthrough. The delay length is alwasy 1, it doesn't allow for an external initial condition, it's not resettable, etc. Is there really a way to configure the Unit Delay block so that it has direct feedthrough?
Also, the Unit Delay doc page includes the following
String Support
The Unit Delay block can accept and output string data type only if the block is configured for a delay length of 0 or 1 or for direct feedthrough.
I don't understand this because it can't have a delay length of 0 and I don't believe it can be configured for direct feedthrough (I'm not even sure what "configured for .. direct feedthrough" means in this context)
Unit delay can have direct feed through when doing frame based processing, aka columns as channels. In frame based mode, suppose the input Uvec is length 2. Conceptually, this vector is made up two samples of a scalar signal u at two different times, k and k-1. I am too lazy too look it up, so let me guess the oldest element is the first element in the vector. Uvec = [ u(k-1); u(k) ] The corresponding output should be two samples of the input delayed by one time step. Yvec = [ u(k-2); u(k-1) ] Notice, the second element of Yvec is the first element of Uvec. That's why framebased processing has direct feedthrough.
Thanks for the repsonse. I'm not as familiar with frame based processing as I'd like to be.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su General Applications in Centro assistenza e File Exchange

Prodotti

Release

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by