Другие ответы - все возможные решения, но потенциально более сложные, чем то, что вы, возможно, ищете. Я думаю, что первая часть ответа Юка посвящена реальной проблеме, с которой вы столкнулись, но я думаю, что она заслуживает более подробного объяснения ...
Если у вас есть функция, имеющая выходных аргументов , вам нужно фактически захватить эти аргументы в переменных при вызове функции. Например, если вы ввели это в командном окне:
[x, y, m] = testinit;
Тогда вам будут доступны три выходных значения. То, что вы, вероятно, делали, печатали так:
testinit;
Это будет отображать значения (потому что вы не заканчивали каждую строку в функции точкой с запятой для подавления их отображения ), но это не будет store их в переменных в командном окне, чтобы вы могли использовать их позже.
Это результат того, как переменные хранятся в MATLAB, как описано в документации для области действия переменных :
MATLAB хранит переменные в той части памяти, которая называется рабочей областью. Базовое рабочее пространство содержит переменные, созданные во время интерактивного сеанса MATLAB, а также любые переменные, созданные с помощью запущенных сценариев. Переменные, созданные в командной строке MATLAB, также могут использоваться сценариями без необходимости объявлять их как глобальные.
Функции не используют базовое рабочее пространство. Каждая функция имеет свое собственное рабочее пространство функции . Каждое рабочее пространство функции хранится отдельно от базового рабочего пространства и всех других рабочих пространств для защиты целостности данных, используемых этой функцией. Даже подфункции, определенные в одном и том же файле, имеют отдельную рабочую область функций.
Итак, если вы хотите обмениваться переменными между функциями, самый простой способ - передавать их туда и обратно через их списки входных и выходных аргументов .
Следует также отметить, что имена, которые вы даете переменным в списке выходных аргументов функции, не обязательно должны совпадать с именами переменных, в которые вы помещаете эти выходные значения. Например, с учетом этой функции:
function [a, b, c] = testinit
a = 4;
b = 3;
c = 2;
Вы можете сделать этот вызов в командном окне:
[x, y, m] = testinit;
И вы получите x = 4
, y = 3
и m = 2
.