首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.m文件中的定义加载到GNU Octave工作区

将.m文件中的定义加载到GNU Octave工作区
EN

Stack Overflow用户
提问于 2020-04-14 00:25:06
回答 2查看 321关注 0票数 1

我已经写了一个.m文件,其中有许多矩阵的定义。现在,我想添加其中的一些,并执行一些其他操作。现在我可以在文件本身中编写这些操作,并在octave-cli中运行它来查看结果,但我希望加载定义,并在octave GUI的输入字段中逐个执行操作(类似于在mathematica notebook中可以完成的操作),但我不想再次在octave gui中手动键入所有行。如何将线条加载到octave的工作空间?

例如,假设somedefinitions.m的内容为

代码语言:javascript
复制
function somedefinitions()
c = 4;
d = 5;

现在我想把它加载到octave gui中,并在输入字段中计算c+d,c*d等(但我不想在octave-gui中手动编写c和d的定义)。

该怎么做呢?我尝试过load somedefinitions.m,但提示它无法确定文件格式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-14 01:13:16

您不能加载somedefinitions,因为它不是数据。如果您调用文件somedefinitions.m,但没有使其成为函数,那么您可以在主代码中调用somedefinitions。它将执行somedefinitions.m中的所有内容并将其加载到工作区中。然后,您可以在命令窗口中执行任何您想要的操作。现在不能这样做,因为函数有自己的工作区,所以即使您想尝试它,变量也会在somedefinitions中定义,但在完成时会被删除。简而言之,删除示例的第一行,然后调用该脚本。

票数 2
EN

Stack Overflow用户

发布于 2020-04-14 02:20:33

只需添加另一种以您最初的方式使用load的方法:

saveload命令可用于存储工作区的状态。

例如,如果在工作区中定义了变量:

代码语言:javascript
复制
>> c = 4
c =  4

>> d = 5
d =  5

您可以使用save命令保存这两个变量:

代码语言:javascript
复制
>> save myvariables.mat

这将把cd都保存到上面提到的文件中。稍后可以使用load将它们检索回工作区。例如:

清除工作区并验证其是否为空:

代码语言:javascript
复制
>> clear
>> whos

将保存的变量加载回:

代码语言:javascript
复制
>> 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随后可以从命令行执行该文件。他的方法的优点是很容易修改变量的创建,并且保留了创建变量的方法。如果工作区包含耗费大量时间的复杂计算的输出,那么保存工作区可能是一种节省时间的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61192229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档