Загрузка определений в файле .m в рабочую область GNU Octave - PullRequest
1 голос
/ 13 апреля 2020

Я написал файл .m, в котором есть определение многих матриц. Теперь я хочу добавить некоторые из них и выполнить некоторые другие операции. Теперь я мог бы записать эти операции в сам файл и запустить его в octave-cli, чтобы увидеть результаты, но я хотел бы загрузить определения и выполнять операции по одной в поле ввода октавы GUI (аналогично что можно сделать в записной книжке Mathematica), но я не хочу снова вводить все строки вручную в октаве gui. Как загрузить строки в рабочее пространство октавы?

Например, предположим, что содержимое somedefinitions.m равно

function somedefinitions()
c = 4;
d = 5;

Теперь я хочу, чтобы это загрузить в октаву gui, и хочу оцените c + d, c* d et c. в поле ввода (но я не хочу вручную писать определения c и d в октаве- gui).

Как это сделать? Я попытался load somedefinitions.m, но это говорит о том, что он не может определить формат файла.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Просто добавьте еще один способ использования load так, как вы изначально предполагали:

Команды save и load можно использовать для хранения состояния вашего рабочего пространства.

Например, если в вашем рабочем пространстве вы определили переменные:

>> c = 4
c =  4

>> d = 5
d =  5

, вы можете сохранить обе эти переменные с помощью команды сохранения:

>> 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

после этого вы можете выполнять любые операции, которые вы хотите на переменные.

Метод Андер выше также будет работать. В этом случае вы сохраняете файл сценария (не функцию), который представляет собой просто список команд, сохраненных в m-файле, который Octave может затем выполнить из командной строки. Его метод имеет то преимущество, что его легко модифицировать, и он сохраняет метод их создания. Если рабочая область содержит выходные данные сложных вычислений, которые занимают много времени, то, возможно, сохранение рабочей области будет экономящим время маршрутом.

2 голосов
/ 13 апреля 2020

Вы не можете загрузить somedefinitions, потому что это не данные. Если вы вызываете файл somedefinitions.m, но не делаете его функцией, вы можете вызвать somedefinitions в своем основном коде. Это выполнит все в somedefinitions.m и загрузит его в рабочую область. Затем вы можете делать все, что вы хотите в командном окне. Вы не можете сделать это сейчас, потому что функции имеют свое собственное рабочее пространство, поэтому, даже если вы попытаетесь сделать это как есть, переменные будут определены внутри somedefinitions, но удалены по завершении. Короче, удалите первую строку вашего примера и просто вызовите этот скрипт.

...