Вот ситуация: мне нужно создать функцию, которая принимает функцию обрабатывать fun
которая имеет ПОСТОЯННОГО ввод длиной (то есть nargin(fun)>=0
), делают некоторые преобразования на входах и затем вызывает fun
. Псевдо-код:Создать функцию с заданным числом входных аргументов
function g = transformFun(fun)
n = nargin(fun);
g = @(v_1, ..., v_n) ...
% ^NOT REAL MATLAB - THE MAIN PROBLEM
fun(someCalculationsWithSameSizeOfOutput(v_1,...v_n){:});
% CAN BE ACHIEVED WITH TEMPORARY CELL IN HELPER FUNCTION^
end
Теперь проблема: ручка выходной функции (в g = transformFun(concreteFun)
) затем передается другой код, который опирается на тот факт, что функция является постоянной длины (предполагается, что nargin(g)>=0
), таким образом, с переменной функция входной длины неприемлема («простое» решение).
Это преобразование называется множеством функций с любым возможным числом аргументов (n
неограничен), поэтому также невозможно охватить конечное число возможностей.
Есть ли способ (простой?) Для достижения этого?
[Я искал интернет в течение нескольких часов и мог только придумать неприятный взломать с использованием устаревшей функции inline
, которую я не мог сделать; возможно, у меня неправильная терминология].
Должна ли быть 'g' допрошена с помощью' nargin'? – Suever
Я думаю, что ваша формулировка делает проблему более сложной. Вы хотите, чтобы 'fun' мог обрабатывать ** переменную ** количество входов, а не ** константу **, правильно? –
@Suever Это верно –