Skip to content
olof3 edited this page Apr 13, 2020 · 20 revisions

Various improvements:

  • Better print of delay systems (at least somewhat fixed now)

  • Better error messages, indicating incorrect dimensions etc.

  • Throw DimensionMismatch, etc, instead of just error. Possibly new error SampleTimeMismatch?

  • Deal with freqresp, output format, exploit Hessenberg structure. Possibly drop nyquist (splitting into real and imaginary parts does perhaps not warrant its own function?).

  • Use cis / expim for computing mappings to the unit circle.

  • Perhaps add a type RationalLtiSystem (RLtiSystem) or at least isrational

  • Should checking (approximate) equality of StateSpace etc. simply check that all the fields are equal? Or should the H_inf or H_2 norm of their difference be checked? Leaning towards checking the H_inf norm even if it is a bit more expensive. There is still a problem with DelayLtiSystems, but this is mostly relevant for tests where freqresp can be used.

  • Export lag and perhaps also some sort of second_order_system?

  • Set number of samples N for time-response of discrete-time system

  • Should we have dedicated method for Base.:-(sys1::StateSpace, sys2::StateSpace), 5--10% faster for small systems.

  • More of the the methods for HeteroStateSpace and StateSpace could be the same.

  • HeteroStateSpace should perhaps rather be called StructuredStateSpace, although that is a bit long and SStateSpace seems like it would be static statespace.

  • impulse should be cleaned up after introduction of new type system, e.g., should perhaps not be a function input for the discrete case. Perhaps k is the best variable to denote discrete time. For example impulse(HeteroStateSpace(big.(1.0), big.(1), big.(1), 0, 1), 10) doesn't work.

Potential new features:

Points for discussion

Input and output formats for freqresp and time responses

In many respects it would make more sense to have each column in the output correspond to one sample time (this is not the way things are now and it is not like this in MatLab). This is arguably the most logical approach and is consistent with the julia's column-major format and would make it possible to do C*x. Standard plotting functions plot columns as separate graphs which is a great downside of this approach. The considerations are the same as for the ordering of freqresp's output.

Clone this wiki locally