Octave 倍频程历史记录命令-变量作为文件名

Octave 倍频程历史记录命令-变量作为文件名,octave,Octave,我想写一个小助手函数来存储和加载倍频程会话 function restoreSession(filename) history -r strcat('./states/',filename,'.history'); load("-binary", strcat('./states/',filename,'.data')) endfunction function saveSession(filename) history -w strcat('./states/',filena

我想写一个小助手函数来存储和加载倍频程会话

function restoreSession(filename)
  history -r strcat('./states/',filename,'.history');
  load("-binary", strcat('./states/',filename,'.data')) 
endfunction


function saveSession(filename)
  history -w strcat('./states/',filename,'.history');
  save("-binary", strcat('./states/',filename,'.data')) 
endfunction
save/load命令运行良好。 我的问题是history命令似乎没有回避这个论点。 它会产生以下错误:

  syntax error

>>>   history -r strcat('./states/',filename,'.history');
                                                       ^
我已经尝试对路径使用临时变量,但在本例中,它只将变量名解释为filename,并抱怨缺少文件


有人知道如何解决这个问题吗?

用函数语法而不是命令使用
历史记录

history ("-r", strcat ("./states/", filename, ".history"));

所有命令实际上都是函数。命令语法(当您不使用括号时)适用于所有函数,但对于某些函数,它看起来更自然。省略括号时,所有参数都被解释为字符串,甚至变量名。如果您想做一些更有趣的事情,请将它们称为函数。

好的,谢谢。我不知道这个事实。但它仍然不起作用。似乎负载和历史的呼唤对外界没有任何影响function@vlad_tepesch您可以使用'evalin(“调用者”,…)使其对调用者的作用域产生影响。谢谢,但如何将其应用于历史记录或加载并保存命令?我的saveSession restoreSession是脚本多于函数,但需要文件名参数。@vlad_tepesch不,不是。它们是函数。只需将对
history
save
load
的函数调用转换为对
evalin
的调用。谢谢,我得到了它:
evalin(“调用者”,strcat(“历史('-r','./states/”,filename,.history'))