Я запускаю много функций из серии файлов. поэтому логично делать функцию, которая выполняет мои функции на файлах, вместо этого повторяя процедуру в каждом файле. Проблема в том, что количество аргументов для каждой функции различно! Так psudo-код:Matlab: Передача всех аргументов в дескриптор функции
function [out1, out2]=batchDo(@func,adrs,arg1,arg2,...,argn)
files=ls(adrs);
for i=1:length(files)
raw=load([adrs files(i)]);
[out1, out2]=func(raw,arg1,arg2,...,argn)
out1s=out1+out1s;
out2s=out2+out2s;
end
out1=out1s/length(files);
out2=out2s/length(files);
К счастью, в моем случае выходы почти одинаковы, и я могу добавить несколько манекенов, чтобы все они похожи. Но если так или иначе будет обращаться к ним, я был бы признателен.
Я не хочу использовать varargin, потому что мои данные большие и обращение к полям делает программы ужасно медленными. – anishtain4
Если вы используете 'arg1' и т. Д. Для' func', можете ли вы просто использовать 'varargin' без адресации ячеек по отдельности, т. Е.' Func (raw, varargin {:}) '? Или создайте анонимную функцию, которая захватывает соответствующие аргументы и передает это вместо, например, 'func2 = @ (raw) func (raw, arg1, arg2, ..., argn)'. Я не уверен, как кто-то должен отвечать на этот вопрос - он граничит с «непонятным, о чем вы спрашиваете». – horchler
Думаю, вам нужно объяснить свою оппозицию варгарину. Он не должен быть медленным и явно является очевидным механизмом в MATLAB для различного количества аргументов. – Peter