Simulink: minimum values in vector segments

In Simulink I have a vector, whose elements can be considered as groups. I need to find the minimum value of each group.
For example I have a vector of 20 elements, which can be devided in five segments of four elements each. The result should be a vector of five minimum values (one for each segment). The exact length of the vector and the number of segments are defined by workspace variables and are constant at runtime.
The equivalent matlab code would be this:
for segment = 1:n_segments
segment_length = n_input_elements/n_segments;
result(segment) = min( inputvector(1+(segment-1)*segment_length : 1+segment*segment_length) );
end
I did not manage to use the MinMax block (together with a selector block) to achieve the desired behaviour. Do you have any suggestions how to implement this?
Best regards

Risposte (1)

Fangjun Jiang
Fangjun Jiang il 30 Giu 2020
Modificato: Fangjun Jiang il 30 Giu 2020
Use a MATLAB Function block and code similar like this: y=min(reshape(1:20,4,5))
work out the warnings and errors regarding variable size of the data

2 Commenti

NiFu
NiFu il 1 Lug 2020
Modificato: NiFu il 1 Lug 2020
Thank you! The reshape function seems to be a good chioce, but I can't fix the errors. I specified the output size to the expected result length of reshape (in our example "5") and Simulink returns the following error message:
Data 'output' is inferred as a variable size matrix, while its properties in the Model Explorer specify its size as inherited or fixed. Please check the 'Variable Size' check box and specify the upper bounds in the size field.
I don't want to check "variable size", since I know the resulting data length of my function. In case I do, I get the following error message:
The signal at 'Input Port 1' of 'MinTest200630/Display' is a variable-size signal with a nondiscrete sample time. The sample time for any variable-size signal must be discrete.
How do I handle this properly?
Nevermind. Because of the poor performance of the matlab function block, I decided to go with two nested for iterator and assignment blocks. Thank you anyways!

Accedi per commentare.

Prodotti

Richiesto:

il 30 Giu 2020

Commentato:

il 1 Lug 2020

Community Treasure Hunt

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

Start Hunting!

Translated by