2010-11-18 6 views
1

Возможно, вы прошли мимо следующей ситуации. Вы работаете, и вы начинаете запускать один сценарий за другим, а затем вдруг осознаете, что изменили значение интересующей вас переменной. Помимо создания резервной копии рабочего пространства, нет другого способа защитить переменные?Защита переменной рабочего пространства

Есть ли способ выбрать отдельные переменные в рабочей области, которую вы собираетесь защитить?

Помимо наблюдения за регистром истории команд, существует ли регистр истории различных значений, присвоенных одной конкретной переменной?

ответ

9

Выполнение сценариев в последовательности - это рецепт катастрофы. Если возможно, попробуйте превратить эти скрипты в функции. Это, естественно, устранит проблемы перезаписи переменных, с которыми вы сталкиваетесь, поскольку переменные внутри функций являются локальными для этих функций, тогда как переменные в сценариях являются локальными для рабочей области и, таким образом, легко доступны/перезаписаны отдельными сценариями (часто непреднамеренно, особенно если вы используете имена переменных, такие как «результат»).

+1

+1. Определенно учатся писать функции, а не скрипты. Это делает ваш код более гибким, более полезным для будущего. – 2010-11-18 12:12:20

+2

+1. Технический nitpick: переменные в скриптах также локальны; они просто локальны для «базового» рабочего пространства, которое сохраняется для жизни сеанса Matlab и в котором выполняются все сценарии. Глобальные переменные объявляются с ключевым словом «global» и могут быть доступны из любой рабочей области, которая объявляет их. –

+0

Значит, вы говорите мне, что хороший программист в Matlab все, что он делает, осуществляется через функции? Если каждый раз, когда я хочу что-то сделать, мне нужно сделать функцию, которая не будет более утомительной и менее гибкой? – Peterstone

0

Нет, нет истории рабочего пространства. Я бы сказал, если вы столкнулись с этой проблемой, о которой вы описали, вам стоит подумать об изменении стиля программирования.

Я хотел бы предложить вам:

  1. положить, что много кода или информации, содержащейся в вашем скрипте, так что вы можете начать с пустого пространства, чтобы выполнить задачу. По этой причине я всегда ставил clear all в начале моего основного файла.

  2. Если это становится слишком сложным, подумайте о вызовах функций. Если вам нужны значения, которые генерируются другим скриптом или функцией, перепишите этот скрипт, чтобы стать функцией, и вызовите его в свой основной файл или сохраните переменные. Загрузка переменных абсолютно нормально. Но выполнение сценариев в последовательности приводит к катастрофе как mentioned by marciovm.

0

Я также согласен с тем, что функции письма могут быть полезны в этой ситуации. Однако, если вы манипулируете очень большими наборами данных, вам нужно быть осторожным, чтобы написать свой код в форме, которая не делает несколько копий переменных в ваших функциях, или вы можете столкнуться с проблемами нехватки памяти.

Смежные вопросы