我在一系列文件上運行了很多函數。所以合理的做一個函數來運行我的文件功能,而不是在每個文件中重複這個過程。問題是每個功能的參數數目不同! 所以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
如果你只對'func'使用'arg1'等,你可以使用'varargin'來單獨尋址單元格,即'func(raw,varargin {:})'?或者創建一個匿名函數來捕獲相關的參數並將其傳入,例如'func2 = @(raw)func(raw,arg1,arg2,...,argn)'。我不確定任何人應該回答這個問題 - 這與「不清楚你問的是什麼」有關。 – horchler
我認爲你需要解釋你對varargin的反對意見。它不應該很慢,並且顯然是MATLAB中針對不同數量參數的明顯機制。 – Peter