It depends on whom you’re asking. A PRBS signal works fine for the heating element in the example, but it would be a poor choice for anything mechanical. I usually prefer chirp signals for a lot of reasons.

It’s easy to select the frequency content

You can “see” the frequency response in the live data during the experiment, and abort early if you determine that the amplitude is too high or too low etc. This is particularly effective for mechanical systems.

The input is just an array, you can let the array represent any signal. A PRBS signal can be obtained by sign.(randn(1, 100)), possibly with some filtering applied before the sign to shape the frequency contents.

Well, I still do not understand why u has to be an adjoint… You say time has to be in the second dimension, but there is no time information in u …
u is a vector with only one dimension…

I am only electrical engineer and no mathematician. Some more explanation for simple engineers would be nice…

I give it the right shape, as described by the documentation. The fact that Julia wraps it in an Adjoint wrapper is completely irrelevant. If you don’t want to use an adjoint, don’t, if you do, that’s also fine. I don’t see what the problem is here, the example works and produces the intended result.

So you would say that in a 2 dimensional matrix rows are the first dimension and columns the second dimension?
OK, you say it works, but I want to understand what you are doing and why.

I found this information online:
" You take the number of rows from the first matrix (2) to find the first dimension, and the number of columns from the second matrix (2) to find the second dimension."

OK, taking this into account the vector u where each element differs in time should be a row vector. A default vector in Julia is a column vector, therefore you make it an adjoint.

OK, I start understand why you are doing this.
I still not understand the difference between and adjoint and a row vector, but that would be a different topic.