Simulink: minimum values in vector segments

2 visualizaciones (últimos 30 días)
NiFu
NiFu el 30 de Jun. de 2020
Comentada: NiFu el 1 de Jul. de 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

Respuestas (1)

Fangjun Jiang
Fangjun Jiang el 30 de Jun. de 2020
Editada: Fangjun Jiang el 30 de Jun. de 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 comentarios
NiFu
NiFu el 1 de Jul. de 2020
Editada: NiFu el 1 de Jul. de 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 el 1 de Jul. de 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!

Iniciar sesión para comentar.

Categorías

Más información sobre General Applications en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by