如何将倍频程函数导入MATLAB?

如何将倍频程函数导入MATLAB?,matlab,octave,Matlab,Octave,我正在用Matlab运行我的代码。但我也想调用一个八度函数。我应该如何将八度音阶的qp函数导入Matlab?因此,假设在同一目录中有两个文件a.m和b.m如果您键入a作为一行代码,则a.m中的一切都将发生(变量赋值函数定义计算等) 此外,您还可以使用import语句将内容添加到导入列表中。如图所示,倍频程合成与MATLAB不完全兼容。例如,在倍频程中定义函数的首选语法如下: function ret = f() %do something endfunction 但是MATLAB不接

我正在用Matlab运行我的代码。但我也想调用一个八度函数。我应该如何将八度音阶的
qp
函数导入Matlab?

因此,假设在同一目录中有两个文件<脚本
b.m
中的code>a.m和
b.m
如果您键入
a
作为一行代码,则a.m中的一切都将发生(变量赋值函数定义计算等)


此外,您还可以使用
import
语句将内容添加到导入列表中。如图所示,倍频程合成与MATLAB不完全兼容。例如,在倍频程中定义函数的首选语法如下:

function ret =  f()
    %do something
endfunction
但是MATLAB不接受这种语法,还有其他的区别,比如调用本地代码和。。。因此,将八度表库的每个语句转换为Matlab或将<代码> OCT C++源转换为MEX是不容易的。
一种简单的方法是,您应该安装Octave并从中运行Octave脚本,然后将结果保存到mat文件,并在MATLAB中加载该文件。您可以使用该函数执行倍频程或从shell运行它

倍频程语言是Matlab语言的超集。如果
qp
只使用Matlab语言,那么您可以简单地将其添加到Matlab路径中并使用它

然而,Octave广泛使用了Octave-only语言,因此您基本上必须自己移植代码。没有这方面的工具,您必须将代码从一种语言转换为另一种语言。此外,实际求解器是用C++编写的,使用LybcTaVE。 与移植
qp
相比,有两种更简单的选择:

  • 将Matlab会话中的数据保存到文件
    save foo.mat mydata
    ,调用Octave完成工作并保存结果
    system('Octave--eval''load(“foo.mat”);qp(…);save foo.mat…;
    ,然后将文件读回
    load foo.mat

  • 或者更简单的选择,只使用八度


我有一种感觉,
import
的工作方式与您认为的不一样。请仔细阅读文档页面上的
import
的目的是什么……非常仔细。它是否与您的推理一致?提示:此问题中的代码在设计中很可能不是面向对象的。