使用Matlab工具箱“;PDToolbox";带倍频程:错误消息

使用Matlab工具箱“;PDToolbox";带倍频程:错误消息,matlab,octave,ode45,Matlab,Octave,Ode45,我想在倍频程下使用Matlab中的“PDToolbox”。我使用的是来自的版本,但我也尝试了v1版本。我正在ubuntu 18.04下使用octave 4.2.2 安装工具箱后,我首先尝试在测试目录中运行测试。其中一些测试运行良好(有时在将ole113替换为ole23之后),但具有多个总体的所有测试都会给出基本相同的错误消息。例如,对于test2.m: >> test2 Running rd dynamics error: ode45: INIT must be a numeric

我想在倍频程下使用Matlab中的“PDToolbox”。我使用的是来自的版本,但我也尝试了v1版本。我正在ubuntu 18.04下使用octave 4.2.2

安装工具箱后,我首先尝试在测试目录中运行测试。其中一些测试运行良好(有时在将ole113替换为ole23之后),但具有多个总体的所有测试都会给出基本相同的错误消息。例如,对于test2.m:

>> test2
Running rd dynamics
error: ode45: INIT must be a numeric vector
我尝试加载包octave odepkg(0.8.5)。(它给出了关于核心libery函数阴影的警告。)之后,我得到了一条稍微不同的错误消息:

>> test2
Running rd dynamics
error: Third input argument must be a valid numerical value
我没有matlab,所以我的第一个问题是matlab是否会出现同样的错误。但我的主要问题当然是,如何克服这些错误。

使用
debug\u on\u error(1)
强制倍频程在出现错误时进入调试模式

从中你会看到run_游戏的第47行,它试图将初始状态G.x0传递给ode45,但这是一个2x2矩阵

Ode45第133行尝试确保初始状态为向量的形式,从而产生错误

我尝试将这个初始状态转换为test2.m文件本身中的一个向量(例如,我做了
x0=x0(:)
)以查看这是否解决了问题,但随后软件包抱怨其他东西没有相同的形状,这意味着您必须寻找所有与此相关的地方


在任何情况下,只要使用向量而不是矩阵作为输入,这个工具箱听起来并不一定与倍频程不兼容。但是由于测试使用矩阵,您可能需要先对它们进行一些调整才能确定答案。

谢谢。你的回答帮助我解决了问题。在run_game.m中调用ode解算器之前,我没有在测试文件中将初始状态更改为向量。我用了
x0=x0'(:)
。太好了。但是,如果您这样做,请确保在ode操作后将输出重塑回其预期形状,否则,传递与预期大小不同的对象可能会产生无声的副作用!