When simulating the response to a specific input signal, the input
data U must be a matrix with as many rows as samples in the time
vector T, and as many columns as input channels.
Let us look at what you have
t has 101 samples. According to the error message (which we will assume to be correct as it says the same thing as the documentation for lsim says), as many rows as samples in the time u must have 101 rows as well.
That is clearly 1 column. Does it satisfy as many columns as input channels ?
C = [1, 0, 0, 0; 0, -1, 0, 0];
2 rows for C -> two input channels. So u must have two columns because the system has two input channels.
Therefore, you would be able to get something to run if you used
Would it be a meaningful run? Probably not. Row K of u should be the list of inputs corresponding to time t(K), so using zeros() like that is telling lsim() that the inputs are zero at every time step. Not impossible, but not likely.