我在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);
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的帮助。感谢。
答案 0 :(得分:0)
您的系统似乎需要更多信息,而不仅仅是程序名称才能启动它。用其他语言调用它不会有帮助,但幸运的是指定路径。
对我来说,以下呼叫失败:
!textpad % Equivalent to system('textpad')
但是这个有效:
!"C:\Program Files (x86)\TextPad 6\TextPad.exe"