error: '__sl_mb05nd__' undefined near line 30 column 20
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
octave-control (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Below is information about my system and the commands leading to the bug. I don't know how to solve this one.
######### SYSTEM INFO #############
aidan@aidan-
Linux aidan-machine 3.16.0-28-generic #38-Ubuntu SMP Fri Dec 12 17:37:40 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
aidan@aidan-
rc liboctave1:amd64 3.6.4-3 amd64 Shared libraries of the GNU Octave language
ii liboctave2:amd64 3.8.1-1ubuntu1 amd64 Shared libraries of the GNU Octave language
ii octave 3.8.1-1ubuntu1 amd64 GNU Octave language for numerical computations
ii octave-audio 1.1.4-4build1 amd64 functions to work with audio files in Octave
ii octave-common 3.8.1-1ubuntu1 all architecture-
ii octave-control 2.6.5-1 amd64 control functions for Octave from Octave-Forge
ii octave-general 1.3.4-1 amd64 provide extra general functions for Octave
ii octave-image 2.2.1-1 amd64 image manipulation for Octave
ii octave-io 2.0.2-1ubuntu1 amd64 input/output data functions for Octave
ii octave-signal 1.3.0-1 amd64 signal processing functions for Octave
ii octave-statistics 1.2.3-1 all additional statistical functions for Octave
ii octave-symbolic 1.1.0-2build1 amd64 symbolic package for Octave
aidan@aidan-
ii libslicot-dev:amd64 5.0+20101122-2 amd64 numerical algorithms from systems and control theory (static library)
ii libslicot0:amd64 5.0+20101122-2 amd64 numerical algorithms from systems and control theory (shared library)
aidan@aidan-
LSB Version: core-2.
Distributor ID: Ubuntu
Description: Ubuntu 14.10
Release: 14.10
Codename: utopic
## ######## REPEATABLE STEPS TO BUG ###############
aidan@aidan-
GNU Octave, version 3.8.1
Copyright (C) 2014 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'.
Octave was configured for "x86_64-
Additional information about Octave is available at http://
Please contribute if you find this software useful.
For more information, visit http://
Read http://
For information about changes from previous versions, type 'news'.
octave:1> s = tf('s')
Transfer function 's' from input 'u1' to output ...
y1: s
Continuous-time model.
octave:2> h = 1/((s-1)*(s-10))
Transfer function 'h' from input 'u1' to output ...
1
y1: ---------------
s^2 - 11 s + 10
Continuous-time model.
octave:3> step(h)
error: '__sl_mb05nd__' undefined near line 30 column 20
error: called from:
error: /usr/share/
error: /usr/share/
error: /usr/share/
error: /usr/share/
octave:3>
I fixed it. The step function worked on my server which runs Trusty. I looked at the difference in files, and found that using a file from an older version of octave-control worked.
Specifically, my server had the following
aidan@aidan- server: ~$ dpkg -l | grep octave-control
ii octave-control 2.6.2-1build1 amd64 control functions for Octave from Octave-Forge
Comparing the /usr/share/ octave/ packages/ control- 2.6.2/@ ss/__c2d_ _.m file from my server (attached) with the /usr/share/ octave/ packages/ control- 2.6.5/@ ss/__c2d_ _.m file from my machine
$ diff <files>
23c23
< ## Version: 0.5
---
> ## Version: 0.4
30,31c30,34
< [sys.a, tmp] = __sl_mb05nd__ (sys.a, tsam, eps);
< sys.b = tmp * sys.b; # G
---
> [n, m] = size (sys.b); # n: states, m: inputs
> ## TODO: use SLICOT MB05OD
> tmp = expm ([sys.a*tsam, sys.b*tsam; zeros(m, n+m)]);
> sys.a = tmp (1:n, 1:n); # F
> sys.b = tmp (1:n, n+(1:m)); # G
Noticing that the older version did not have the offending line, I simply copied the old version over into my system
sudo cp ./__c2d__.m.old /usr/share/ octave/ packages/ control- 2.6.5/@ ss/__c2d_ _.m
And voila! It worked. Enjoy