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