使用MATLAB调用Octave模型

时间:2014-02-20 00:19:23

标签: matlab octave

我在MATLAB中运行一个优化代码,它需要一个与Octave兼容的模型的适应值(我不能使用MATLAB来解决这个模型。因此,Octave。)。为了做到这一点,我在MATLAB中编写了一个健身函数,看起来像这样

fid = fopen('parameter.txt','w');
for i=1:length(x)
%    fprintf(fid,'%e \n',x(i));
    fprintf(fid,'%12.5f \n',x(i));
end
fclose(fid);

system('./dswrap');

% get the objective fitness value:
fid = fopen('fitness.txt','r');
y=fscanf(fid,'%f',[1]);
fclose(fid);
  1. x是进入parameter.txt
  2. 的模型的输入向量
  3. fitness.txt是./dswrap
  4. 的输出

    dswrap是一个用C编写的代码,如下所示

    int main()
        {
            FILE*fp,*fp_r;
            fp=popen("octave","w");
            fprintf(fp,"ObjFuS");
            pclose(fp);
        }
    

    这会调用八度音,然后调用ObjFus,它接受来自parameter.txt的输入并输出到fitness.txt。我面临的问题是fitness.txt没有生成,经过一些麻烦,我看到一个问题

    sh: octave: command not found
    

    我可以从终端调用八度音阶。所以我不确定为什么我收到上述错误? 是不是我做错了什么呢?我需要有关正确生成fitness.txt的帮助。感谢。

1 个答案:

答案 0 :(得分:0)

您的系统似乎需要更多信息,而不仅仅是程序名称才能启动它。用其他语言调用它不会有帮助,但幸运的是指定路径。

对我来说,以下呼叫失败:

!textpad % Equivalent to system('textpad')

但是这个有效:

!"C:\Program Files (x86)\TextPad 6\TextPad.exe"