2015-02-18 5 views
-4

Предположим, что у меня есть подфункция, показанная ниже. В чем разница между этими двумяФункция функции Matlab

function a=b(x,y) 
. 
. 
. 
a=output 

и

function b(x,y) 
...... 

, если я пишу во второй форме, как я могу определить его основные функции и как я могу видеть его выходы.


Другой вопрос,

Я нашел код отсюда (http://www.mathworks.com/matlabcentral/fileexchange/21443-multiple-rapidly-exploring-random-tree--rrt-), включая функции, как:

%% SetObstacleFilename 
    function SetObstacleFilename(self,value) 
     if isa(value,'char') 
      self.obstacleFilename = value; 
      self.GenerateObstacles(); 
     end 
    end 

как я могу использовать его в своей основной функции? Более того, что такое self.GenerateObstacles() команда? На нем нет равенства?

+2

Я думаю, вам следует отправить 2 разных вопроса. Кроме того, вы можете отформатировать код для вашего первого вопроса, чтобы его более читаемые, пожалуйста? Благодаря! –

ответ

0

Я думаю, что я вижу, как оба ваши вопроса связаны с одной и той же вещью. Вы действительно должны попросили что-то вдоль линий:

Я всегда видел MATLAB функцию, написанную в форме function a=b(x,y), однако в последнее время я наткнулся на some code который включал функции в виде function b(x,y) (например function SetObstacleFilename(self,value)) .... так что с этим?

Для того, чтобы понять, 2-й тип функций, которые необходимо учитывать объектно-ориентированное программирование (ООП).

Пример кода, который вы нашли, взят из MATLAB class. Функции, связанные с классом, известны в ООП как «методы», и этот конкретный код на другом языке программирования будет иметь форму функции void return type.

Теперь рассмотрим термин object, который относится к экземпляру class.

Традиционно методы ограничиваются одним выходом. По этой причине некоторые методы предназначены для работы на objects (фактически pointers, AKA «передача по ссылке»), так что возврат значения не требуется вообще, потому что входные объекты напрямую обрабатываются. Другие случаи, когда методы не нужны , чтобы вернуть что-либо, могут включать функции, которые имеют некоторую «полезную» функциональность (например, инициализировать что-то, нарисовать что-нибудь, вывести что-то на консоль и т. Д.), Как и упомянутый вами метод self.GenerateObstacles()).

Что касается других ваших вопросов:

  • self в SetObstacleFilename(self,value) выглядит как экземпляр рассматриваемого класса.
  • Обычно для использования методов класса необходимо создать экземпляр объекта с помощью конструктора (который должен быть функцией с с таким же именем класса), если только эти методы не являются static.

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

Надеюсь, что происходит, сейчас немного яснее!


Вот некоторые ресурсы для вас:

  1. MATLAB's OOP Manual.
  2. MATLAB's documentation on OOP.
Смежные вопросы