Simulink: minimum values in vector segments

2 views (last 30 days)
NiFu
NiFu on 30 Jun 2020
Commented: NiFu on 1 Jul 2020
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

Answers (1)

Fangjun Jiang
Fangjun Jiang on 30 Jun 2020
Edited: Fangjun Jiang on 30 Jun 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 Comments
NiFu
NiFu on 1 Jul 2020
Edited: NiFu on 1 Jul 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?
NiFu
NiFu on 1 Jul 2020
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!

Sign in to comment.

Categories

Find more on General Applications in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!