2009-11-08 5 views

ответ

17

This page говорит,

Сценарии против функций

Сценарии т-файлы, содержащие MatLab заявления. MATLAB `` functions '' - это другой тип m-файла. Самая большая разница между сценариями и состоит в том, что функции имеют вход и выходные параметры. Файлы сценариев могут работать только с переменными, которые жестко закодированы в их m-файл. Как вы можете видеть, функции гораздо больше гибкий. Поэтому они более подходят для задач общего назначения , которые будут применяться к различным данным .

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

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

Напротив, функциональные переменные являются , являющимися локальными для функции. (Исключение является то, что можно объявить и использовать глобальные переменные, но требует и явное действие на пользователем.) Локальная область видимости функции переменных дает большую безопасность и гибкость. Единственный способ (кроме явно объявленных глобальных переменных) для получения информации в функцию и через нее через переменные в списках параметров.

Пример

Одним из основных отличий между сценарием и функцией является доступ к переменным в рабочем пространстве. Например, предположим, что в рабочей области вы определили две переменные a = 10 и b = 20. Эти переменные определены в командной строке основного приглашения.

файл сценария - display_mult.m

disp(a*b);

Typing display_mult будет отображать продукт a и b в рабочем пространстве, т.е. 10*20 или 200.

Но если вы определили функцию, называется display_mult определены в файле с таким же именем:

Функция файла - display_mult.m

function display_mult(a,b) 
    disp(a*b); 
end 

Вы должны включать в себя два переменные как аргументы вызова функции. Итак, display_mult будет не Работаю с a и b не существует в рабочем пространстве функции. Вы должны включить их, запустив display_mult(a,b), который отобразит желаемый результат.

Простое объяснение

Каждый оператор в скрипте это эквивалентно вводу их в окне командной строки в среде MATLAB. Вы просто храните их перед собой в файле!

Функция, с другой стороны, принимает аргументы и является «новым» рабочим пространством, отделенным от основного рабочего пространства.

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

+0

пример? Можете ли вы дать мне пример? – izzat

+0

Добавлен пример и расширен на решение – Jacob