Я создаю класс, который для всех практических целей (хотя он гораздо сложнее, чем выглядит) можно рассматривать как вещественное число в формате matlab.
В классе я могу перегрузитьбольшое количество операторов matlab, таких как plus, mpower и т. д.
Вероятно, это невозможно, но как мне перегрузить любую функцию моего класса?Другими словами, предположим, что у меня есть произвольная функция f, которая принимает действительные числа и выводит действительные числа, и говорит, что X является экземпляром моего класса.Я хотел бы, чтобы f (X) правильно интерпретировался с помощью matlab (конечно, у меня есть естественный способ взять указатель на функцию и применить его к моему классу, что я и сделал бы в коде).
Проблемы, которые я могу видеть: у matlab нет возможности увидеть, что функция f принимает в качестве входных данных действительное число.Но я бы оставил это пользователю, чтобы не портить вызовы его функций.
Имею ли я какой-то смысл?
Не думаю, что это возможно, но если бы это было так, это было быофигенно.
ps: я знаю, что, возможно, смогу обойти это, создав метод, который принимает дескриптор функции в качестве входных данных, но он менее симпатичен ..
Спасибо!
edit:
Извините, я понимаю, что это немного сбивает с толку.Я буду более ясным.Допустим, у меня есть класс, который представляет случайные, реальные переменные (скажем, для дискретного набора для простоты).Мой класс содержит распределение вероятностей случайной величины, а также ее возможные значения.
Для любых двух случайных величин X, Y сумма X + Y четко определена, поэтому, если у меня есть экземпляры X и Yкоторые представляют случайные величины, было бы неплохо, если бы Z = X + Y определял новую случайную переменную, равную сумме X и Y, с соответствующим набором и распределением.Я сделал это, перегрузив оператор плюс.Это хорошо.
Скажи, что у меня есть произвольная функция f, скажем "cos".Ну, для любой случайной величины X, cos (X) также является случайной величиной, и было бы неплохо, если бы я мог просто написать Z = cos (X), который автоматически создаст экземпляр моего класса, вычислит соответствующую область иРаспределение вероятностей.
Проблема в том, что я хотел бы, чтобы эта автоматическая операция выполнялась для любой функции f - я не хочу вручную перегружать каждую обычно используемую функцию (тем более, что я хочу, чтобы трюк работал с определенными пользователемфункции f).
Чтобы привести еще один пример: я создаю случайную переменную X с областью [-2, -1,0,1,2] и вероятностями [1 / 5,1 / 5,1 / 5,1 / 5, 1/5]
Я создаю (странную) функцию f такую, что f (x) = x, если x = -2 или 2 f (x) = x ^ 2 в противном случае
Затем, установив Z = f (X), я хочу, чтобы matlab автоматически создал случайную величину Z с областью {-2,0,1,2} и вероятностями [1/5, 1/5,2/5, 1/5]
математически, я знаю, как это сделать.Но мне нужно перехватить и перегрузить любой вызов функции моего класса.
это имеет какой-то смысл?
ps: я не обучен формально объектно-ориентированному программированию, поэтому я могу использоватьиногда неверное слово для понятия.
Опять же, спасибо за любую помощь!