2016-11-19 29 views
2

我有likt此一代碼:通行證空功能句柄作爲參數MATLAB

bla = {[], @fftshift, @ifftshift}; 

for aa=1:numel(bla) 

for bb=1:numel(bla) 

    for cc=1:numel(bla) 

     for dd=1:numel(bla) 

      [~, ~, ~] = somefunction(bla{aa}, bla{bb}, bla{cc}, bla{dd}); 
     end 

    end 

end 

end 

而在somefunction我有

Y = func1(fft(func2(blablabla))); 

其中的func1和func2函數由BLA {AA}和BLA {取代BB}。

如果我運行此代碼我得到一個錯誤

Subscript indices must either be real positive integers or logicals. 

我怎麼能告訴MATLAB我不想通過任何函數作爲參數,使如對於第一次迭代I必須

(fft((blablabla))) 

編輯

我已經嘗試過寫一個 「空」 的功能,並通過其句柄作爲參數

function donothing() 
end 

bla = {@donothing, @fftshift, @ifftshift}; 

,只是

bla = {[], @fftshift, @ifftshift}; 

bla = {'', @fftshift, @ifftshift}; 

但在所有情況下,我得到了Subscript indices must either be real positive integers or logicals.Too many input arguments.

+0

傳遞的句柄標識的功能,而不是一個空數組:'H = @( x)x'。 – buzjwa

+0

不,這不起作用。我得到'太多的輸入參數。' – Colonder

+0

啊哈,所以你想要一個具有多個輸入和輸出的函數。如果你有特定數量的參數,你可以用'h = @(x1,x2,x3)處理(x1,x2,x3)',例如3個參數。 – buzjwa

回答

0

基於hbaderts的評論答案是

function varargout = doNothing(varargin) 
    varargout = varargin; 
end