Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

StateSpace constructor should not call _remove_useless_states #244

Closed
Milestone
@MaxGaukler

Description

@MaxGaukler

State space representations should, in my opinion, not be reduced automatically with StateSpace._remove_useless_states(), similar to the fact that we don't call minreal() automatically.

Unlike transfer functions, state space models can model non-observable or non-controllable behaviour, and cannot always be considered equivalent to their minimized form. Additionally, it is rather confusing to havess(A,B,C,D).A !== A and e.g.ss(A,B,C,D).sample(T).A !== expm(A*T). For a more object-oriented interface, it would also be great to have member functions like stateSpace.isControllable(), which do not make sense if the system has already been minimized.

To give an example: The autonomous system x'=0, y=x is a signal model for the constant output y=x(0). It is not equivalent to the system y=0 if you consider the initial response for x(0) !== 0.

​import controlprint(control.__version__)print(control.ss(0,0,1,0)) # expected: A,B,C,D unchanged from inputprint(control.ss(0,0,1,0).sample(1)) # expected: ss(1,0,1,0, dt=1)

output:

0.8.0A = []B = []C = []D = [[0]]A = []B = []C = []D = [[0]]dt = 1

Is there a reason for the current behavior, or would it be okay to change it?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp