我已经写了一个.m文件,其中有许多矩阵的定义。现在,我想添加其中的一些,并执行一些其他操作。现在我可以在文件本身中编写这些操作,并在octave-cli中运行它来查看结果,但我希望加载定义,并在octave GUI的输入字段中逐个执行操作(类似于在mathematica notebook中可以完成的操作),但我不想再次在octave gui中手动键入所有行。如何将线条加载到octave的工作空间?
例如,假设somedefinitions.m的内容为
function somedefinitions()
c = 4;
d = 5;现在我想把它加载到octave gui中,并在输入字段中计算c+d,c*d等(但我不想在octave-gui中手动编写c和d的定义)。
该怎么做呢?我尝试过load somedefinitions.m,但提示它无法确定文件格式。
发布于 2020-04-14 01:13:16
您不能加载somedefinitions,因为它不是数据。如果您调用文件somedefinitions.m,但没有使其成为函数,那么您可以在主代码中调用somedefinitions。它将执行somedefinitions.m中的所有内容并将其加载到工作区中。然后,您可以在命令窗口中执行任何您想要的操作。现在不能这样做,因为函数有自己的工作区,所以即使您想尝试它,变量也会在somedefinitions中定义,但在完成时会被删除。简而言之,删除示例的第一行,然后调用该脚本。
发布于 2020-04-14 02:20:33
只需添加另一种以您最初的方式使用load的方法:
save和load命令可用于存储工作区的状态。
例如,如果在工作区中定义了变量:
>> c = 4
c = 4
>> d = 5
d = 5您可以使用save命令保存这两个变量:
>> save myvariables.mat这将把c和d都保存到上面提到的文件中。稍后可以使用load将它们检索回工作区。例如:
清除工作区并验证其是否为空:
>> clear
>> whos将保存的变量加载回:
>> load myvariables.mat
>> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
c 1x1 8 double
d 1x1 8 double在此之后,您可以对变量执行任何您想要的操作。
Ander的上述方法也适用。在这种情况下,您保存的脚本文件(不是函数)只是保存在m文件中的命令列表,Octave随后可以从命令行执行该文件。他的方法的优点是很容易修改变量的创建,并且保留了创建变量的方法。如果工作区包含耗费大量时间的复杂计算的输出,那么保存工作区可能是一种节省时间的方法。
https://stackoverflow.com/questions/61192229
复制相似问题