2010-01-20 6 views
12

Я использовал MATLAB 6.5 раньше. Я получил несколько программ, которые используют «@». Может кто-нибудь сказать мне, что это?Что такое оператор @ в MATLAB?

Кстати, поддерживает ли MATLAB 6.5 этот оператор?

ответ

17

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

7

Раньше он указывал Anonymous Functions в Matlab.

Я думаю, что термины «Function Handle».

Практически он охватывает неспособность Matlab объявлять функцию в любом месте в любом файле M.

Вы можете увидеть здесь: What is your favourite MATLAB/Octave programming trick?

Я нашел, что это будет полезно в обработке изображений вместе с командой «blockproc».

+0

Фактически это называется дескриптором функции (не обработчиком), использующим аналогичное соглашение об именах, поскольку объекты графики также имеют «дескрипторы». – MatlabDoug

+0

Исправлено, спасибо. – Royi

1

function_handle (@)

Ручка используется в вызове функции indirectlyexpand всех страницах Синтаксис ручки = @functionname ручки = @ (список аргументов) anonymous_function

Описание

ручки возвращается = @functionname ручку к указанной функции MATLAB®.

Функциональный дескриптор - это значение MATLAB, которое обеспечивает возможность косвенного вызова функции. Вы можете передавать функции в вызовы другим функциям (часто называемые функциональными функциями). Вы также можете хранить дескрипторы функций в структурах данных для последующего использования (например, как обратные вызовы Handle Graphics). Функциональный дескриптор является одним из стандартных типов данных MATLAB.

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

handle = @ (arglist) anonymous_function создает анонимную функцию и возвращает дескриптор этой функции. Тело функции, справа от круглых скобок, представляет собой один оператор или команду MATLAB. arglist - список входных аргументов, разделенных запятыми. Выполните функцию, вызвав ее с помощью дескриптора функции, handle.

Примеры

Пример 1 - Построение ручки для именованной функции Следующий пример создает функцию ручки для функции горбов и присваивает его переменной fhandle.

fhandle = @humps; Передайте дескриптор другой функции так же, как и любой аргумент. В этом примере передается только что созданный fminbnd дескриптор функции, который затем минимизируется на интервале [0,3, 1].

х = fminbnd (fhandle, 0,3, 1) х = 0,6370 Функция fminbnd оценивает функцию @humps ручку. Ниже показана небольшая часть файла fminbnd. В строке 1 входной параметр funfcn принимает обработчик функции @humps, который был передан. Оператор в строке 113 оценивает дескриптор.

1 функция [xf, fval, exitflag, output] = ... fminbnd (funfcn, ax, bx, options, varargin) . . . 113 fx = funfcn (x, varargin {:});

+0

Я думаю, что обновленная ссылка будет лучше, чем просто скопировать ее. По крайней мере, вы можете удалить «expand all ...», «Syntax» и т. Д. И упорядочить его на странице, чтобы быть более читаемым – Adiel

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