MIMO state space <--> MIMO transfer function - How? Normally I use the controllability and observability canonical forms to transform a transfer function into a state space model.
I also find the poles, zeros and gain from a state space model to transform the transfer function into a transfer function.
But this is only in SISO-case. How would it be if I have a MIMO state space model and I want to transform that into a MIMO transfer function matrix? 
I know that if the column length of the $B$-matrix is $2$ and the row length of $C$-matrix is $2$, then I will have a transfer function matrix of the dimension $2 \times 2$. 
So can I still use the controllability and observability canonical forms to compute the MIMO transfer function matrix, into a MIMO state space model, just by using only one column of $B$-matrix and one row of the $C$-matrix at each time?
And if I want to transform a MIMO state space model into a MIMO transfer function, I need to find the poles, zeros and gain for each row and column from $C$ and $B$ matrix? 
Are that correct?
 A: For any continuous time state space model, so SISO, MISO, SIMO or MIMO you can always use the following formula to convert the state space model into a transfer function matrix
$$
G(s) = C (s\,I - A)^{-1} B + D.
$$
A: If you realize a MIMO linear system channel-by-channel using canonical forms for each pair of 1 input variable to 1 output variable, the realization may be of larger order than the minimum. This subject is covered in Linear System Theory, 2/e - Rugh, Wilson J, Chapter 13, and many other books.
A: The typical algorithm is Numerically stable algorithm for transfer function matrix evaluation by Varga, Sima DOI:10.1080/00207178108922980 which can be summarized as iterating
over every row/cols of $B$ and $C$ to get SISO Transfer representations
via $c_i(sI-A)^{-1}b_j+d_{ij}$. Individual elements would be minimal (if the original model was minimal to start with) but it does not guarantee the minimality of the overall model as there can be cancellations with transmission zeros.
I've implemented this here for some time ago. I already see that I have to refactor some parts of it apparently.
