MATLAB: Error in sysic: There is a syntax problem with workspace variable OUTPUTVAR.

outputvar errorsysic

Hi,
I'm trying to interconnect systems using the sysic function. I find it hard to understand how it works, and I thought I did it right, but I get the error:
There is a syntax problem with workspace variable OUTPUTVAR.
This is what I'd like to achieve:
K is a 1×1 tf and FWT is a 2×3 tf. In my code, FWT is called P. This is what I did:
systemnames = 'K P';
inputvar = '[ref;tau;V]';
outputvar = '[P(1,1)*K+P(1,2)*tau+P(1,3)*V;P(2,1)*K+P(2,2)*tau+P(2,3)*V]';
input_to_K = '[ref-(P(1,1)*K+P(1,2)*tau+P(1,3)*V)]';
input_to_P = '[K;tau;V]';
cleanupsysic = 'yes';
newsys = sysic;
I don't even know if what I'm trying to do would result in the system I want to create, but also I do not understand where the error comes from.
I hope someone can help me out. Thanks in advance
Iris

Best Answer

The documentation for sysic indicates,
outputvar is a char, describing the outputs of the interconnection. Outputs do not have names-they are simply linear combinations of individual subsystem's outputs and external inputs. Semicolons delineate separate components of the interconnections outputs. Between semicolons, signals can be added and subtracted, and multiplied by scalars. For multivariable subsystems, arguments within parentheses specify which subsystem outputs are to be used and in what order. For instance, plant(2:4,1,9:11) specifies outputs 2,3,4,1,9,10,11 from the subsystem plant. If a subsystem is listed in outputvar without arguments, then all outputs from that subsystem are used.
Your P has two outputs, omega and z, so when you use P in outputvar you could reference P or P(1) or P(2) or P(1,2) (both outputs) or P(2,1) (both but in reverse sequence), but when you use P(1,1) you would be implying that you wanted to use the first output of P twice. Do not treat the subsystems as being matrices: treat them as being vectors. A reference to P(a,b,c) in outputvar would have equivalent MATLAB syntax of P([a,b,c]). Your reference to P(2,3) in outputvar would imply that P has 3 outputs, which it does not.
Also, you have
input_to_K = '[ref-(P(1,1)*K+P(1,2)*tau+P(1,3)*V)]';
Here you would be trying to access a third output of P which has only 2 outputs. You are also indicating that tau and V are inputs to K, which is not in evidence on your diagram. You are also indicating that K is input to itself, which is very much not in evidence on your diagram. Your diagram implies only:
input_to_K = '[ref-P(1)]';
That is, the first output of P is subtracted from ref to form the input to K.