Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将空函数句柄作为参数传递给MATLAB_Matlab - Fatal编程技术网

将空函数句柄作为参数传递给MATLAB

将空函数句柄作为参数传递给MATLAB,matlab,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 在somefunct

我有这样一个代码:

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我不想将任何函数作为参数传递,例如,对于第一次迭代,我将

(fft((blablabla)))
编辑

我已经尝试过编写一个“空”函数并将其句柄作为参数传递

function donothing()
end

bla = {@donothing, @fftshift, @ifftshift};
而且很简单

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


但在所有情况下,我得到的
下标索引必须是实正整数或逻辑。
输入参数太多。

根据hbaderts的评论,答案是

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

将句柄传递给标识函数而不是空数组:
h=@(x)x
。不,这不起作用。我得到了太多的输入参数。Aha,所以您需要一个具有多个输入和输出的函数。如果你有特定数量的参数,你可以做
h=@(x1,x2,x3)处理(x1,x2,x3)
,例如3个参数。结果也是这样,你可以做
h=@(varargin)处理(varargin)
。函数
function varargout=doNothing(varargin)
的内容是
varargout=varargin工作?
function varargout = doNothing(varargin)
    varargout = varargin;
end