- Notifications
You must be signed in to change notification settings - Fork441
Closed
Labels
Description
TimeResponseData.to_pandas() fails if there are no states in a NonlinearIOSystem:
importcontrolasctclassSystem:@classmethoddef_outputs(cls,t,x,u,params:dict):v=u[0]i=u[1]k=u[2]returnk*v**2+i@classmethoddefbuild(cls):returnct.NonlinearIOSystem(None,cls._outputs,name="system",states=None,inputs=('v','i','V'),outputs=('I',),params=params, )T=np.arange(100)# simulation time in secondsU=np.ones(shape=(3,len(T)))sys=System.build()ydata=ct.input_output_response(sys,T=T,U=U,solve_ivp_method="Radau").to_pandas()---------------------------------------------------------------------------TypeErrorTraceback (mostrecentcalllast)CellIn[106], [line28](vscode-notebook-cell:?execution_count=106&line=28) [25](vscode-notebook-cell:?execution_count=106&line=25)U=np.ones(shape=(3,len(T))) [27](vscode-notebook-cell:?execution_count=106&line=27)sys=System.build()---> [28](vscode-notebook-cell:?execution_count=106&line=28)ydata=ct.input_output_response(sys,T=T,U=U,solve_ivp_method="Radau").to_pandas() [29](vscode-notebook-cell:?execution_count=106&line=29)ydataFile [~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:655](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:655),inTimeResponseData.to_pandas(self) [650](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:650)data.update( [651](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:651) {name:self.u[i]fori,nameinenumerate(self.input_labels)}) [652](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:652)data.update( [653](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:653) {name:self.y[i]fori,nameinenumerate(self.output_labels)}) [654](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:654)data.update(--> [655](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:655) {name:self.x[i]fori,nameinenumerate(self.state_labels)}) [657](https://file+.vscode-resource.vscode-cdn.net/home/joaoantoniocardoso/workspace_TCC/repo_2022_2/models/2020/panel/~/workspace_TCC/repo_2022_2/.env/lib/python3.10/site-packages/control/timeresp.py:657)returnpandas.DataFrame(data)TypeError:'NoneType'objectisnotiterable
Not optimal, but as a workaround, I'm introducing a state:
classSystem:@classmethoddef_updates(cls,t,x,u,params:dict):return0@classmethoddef_outputs(cls,t,x,u,params:dict):v=u[0]i=u[1]k=u[2]returnk*v**2+i@classmethoddefbuild(cls):returnct.NonlinearIOSystem(cls._updates,cls._outputs,name="system",states=1,inputs=('v','i','V'),outputs=('I',),params=params, )