Как использовать параметр в качестве глобальной переменной в файле .m?

#matlab

#matlab

Вопрос:

Чтобы четко описать, что я имею в виду, я просто привожу здесь пример:

 function y = f(x,a)
global a
y = f1(x);

function y = f1(x)
global a
y = x   a;
  

Здесь я хочу, чтобы переменная ‘a’ использовалась как глобальная переменная, которая может быть вызвана подфункцией ‘f1’ для вычисления $ x a $. (Моя цель — сократить преобразование параметров)

Но эта функция не работает, если я не определю новую переменную ‘b’, чтобы восстановить значение ‘a’.

Вопрос в том, как я могу сделать ‘a’ глобальной переменной напрямую, без определения новой переменной?

Ответ №1:

Я бы не рекомендовал вам использовать глобальные переменные, тем более что вы передаете a в функцию f .

Желаемое поведение может быть получено без глобальных переменных, но с использованием вложенных функций:

 function y = f(x,a)
y = f1(x);
   function y = f1(x)
   y = x   a;
   end
end
  

Ответ №2:

Вы можете попробовать

 a=evalin('base','a');
  

чтобы получить значение a из базовой рабочей области. Глобальные переменные обычно не рекомендуются.

Комментарии:

1. При всем должном уважении, это даже хуже, чем просто глобальные переменные. eval , evalin и assignin следует использовать только тогда, когда другие варианты невозможны. Ваше решение будет работать, но поддерживать код будет намного сложнее.

2. Да, я согласен в принципе. На каком-то уровне оператору необходимо передать значение a функции. Я бы предпочел передать его явно.