【发布时间】:2017-03-04 22:59:32
【问题描述】:
我有一个这样的代码:
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};
或
bla = {'', @fftshift, @ifftshift};
但在所有情况下我都得到了Subscript indices must either be real positive integers or logicals. 或Too many input arguments.
【问题讨论】:
-
将句柄传递给标识函数而不是空数组:
h = @(x) x。 -
不,这行不通。我得到
Too many input arguments. -
啊哈,所以您需要一个具有多个输入和输出的函数。如果您有特定数量的参数,您可以使用
h = @(x1, x2, x3) deal(x1, x2, x3),例如 3 个参数。 -
原来you can use
vararginin anonymous functions也是如此,所以你会这样做h = @(varargin) deal(varargin)。 -
函数
function varargout = doNothing(varargin)和内容varargout = varargin;是否有效?
标签: matlab