Jes*_*ica 6 matlab if-statement inline function anonymous-function
函数可以定义为@(x) x^.2(例如)
但是在这种情况下,我们有一个函数,在不同的时间间隔上采用不同的表示形式, if abs(x)<3 fun = x^.2 else 0
我们如何使用相同的方式(我的意思是使用@(x))来定义这样的函数.
Rod*_*uis 17
有几种方法可以做到这一点.
乘以假:
g = @(x) (abs(x)<3) .* x.^2
Run Code Online (Sandbox Code Playgroud)
或者定义一个合适的功能(真正的最佳方式):
function y = g(x)
y = zeros(size(x), class(x));
inds = abs(x)<3;
y(inds) = x(inds).^2;
end
Run Code Online (Sandbox Code Playgroud)
或者做一些乱七八糟的低效但有趣的事情并使用内联 - 如果:
iif = @(varargin) varargin{2 * find([varargin{1:2:end}], 1, 'first')}();
g = @(x) iff( ...
abs(x)<3, x.^2, ...
true, 0);
Run Code Online (Sandbox Code Playgroud)