Диспетчеризация массива объектов
В новой объектной модели MATLAB (classdef
и т. д.): если у меня есть массив объекта и я вызываю обычный метод, то должны ли методы вызываться для каждого объекта или для всего массива, т. е. передается ли в метод отдельный объект или весь массив? Я знаю, что в старой модели он был отправлен как весь массив.
2 ответа
Решение
Если у вас есть:
classdef MyObject
methods
function foo(obj)
...
end
А ты потом позвони
>> foo(myObjArray)
Тогда единственный вызов foo() получит весь массив. Оттуда вы можете написать код для обработки скалярного случая obj или векторного случая obj.
Это зависит от того, векторизован ли ваш метод. Для тривиального примера:
Не векторизация
function result = mySimpleMultiply(a,b)
result = a*b;
Векторизованное
function result = myVectorizedMultiply(a,b)
result = a.*b;