У меня есть старый код от разных авторов, который использует глобальные переменные в течение многих лет и следующую проблему: я импортировал несколько (> 200) переменных из файла excel. Они не находятся внутри функции, и они не обозначены как глобальные. Для работы функции они должны быть потому, что есть одна функция1, которая вызывает функцию 2. Функция 1 вызывается один раз, только когда функция 2 вызывается> 10000 раз, поэтому я хочу, чтобы что-то глобальное было внутри функции 1. Как я могу легко превратить их в глобальные переменные и передать их функции 2?Включить все текущие переменные рабочего пространства в глобальные переменные
пример (схема)
% function1
% global *other variables exist here already*
% this function calls function2 at a certain point further below
L=whos
save L % some variables a b c ... are parameters in function2
% function2
% global *other variables exist here already*
load L % i dont want to load my workspace everytime, I rather wish to just access global variables a b c...
% the problem is that my variables sometimes change name and I want to have
% them all global in an automatic way. Or live with a workaround.
Спасибо за ваше терпение и я готов отвечать на вопросы!
UPDATE I:
мне удалось обойти с помощью которого им не совсем доволен, потому что она включает в себя ручной манипуляции в коде. Так что это временное решение в лучшем случае.
% позволяет сказать, что у вас есть переменные рабочего пространства, и вы сохраняете их под этим именем, а затем загружаете их: load workspacevars.mat;
L = кто% дают имена вариабельному как строки столбец L = L»% и в такой форме, которая делает вас возможность использовать его в качестве глобальных (в строке)
%, к сожалению, с использованием глобальной L не работает для меня. есть идеи? % Мне нужно было перейти в L в рабочей области и нажать и перетащить полученную длинную строку в текстовый редактор. % там, я удалил фигурные скобки {} и '', потому что так глобально нравится иметь свои переменные: чистые.
%, наконец, это выглядит следующим образом: глобальный var1 var2 var3 ....
Связанный: http : //stackoverflow.com/q/26361946/2777181 –
Не могли бы вы объяснить комментарий «проблема в том, что мои переменные иногда меняют имя»? – TroyHaskin
Если вы используете [вложенные функции] (http://www.mathworks.com/help/matlab/matlab_prog/nested-functions.html?refresh=true), переменные разделяются между 'function1' и' function2' как долго поскольку 'function2' не объявляет их как входные данные. – TroyHaskin