it seems as if you can basically use not "common" matlab features to build a simulink block
Yes, that is correct. Simulink is much more restricted than basic MATLAB is.
With regards to strcat:
- if any input is a string object, the output is a string array. Sizes of non-scalar arguments must match and output is same size as the non-scalar input
- if no input is a string object, but at least one input is a cell array of characters, the output is a cell array of characters. Sizes of non-scalar arguments must match, and output is same size as the non-scalar input
- otherwise the output is a character array. The number of rows must match for entries with more than one row, and the output has that number of rows
So... in order for Simulink to be able to predict the size and data types of the outputs, it would have to know these rules and analyze the inputs. But if any of the inputs are passed in, then Simulink might not know the datatype ahead of time, and so be unable to statically decide size and datatype.
... and these differences are important in Simulink. MATLAB has the luxury of being able to dynamically change datatypes and size, but Simulink has no flexibility on changing data type, and a number of restrictions on changing size.
Simulink with acceleration is most targetted at configurations where you are not doing any dynamic memory allocation, or at most you have a restricted maximum call stack.