how define a conditional handle function?
显示 更早的评论
As you know, for
f=@(x) sin(x)/x;
we get f(0)=NaN
if we would like get f(0)=0
again with
f=@(x) (x==0)*0+(x~=0)*sin(x)/x;
we will receive f(0)=NaN.
how can i dominate this problem?
1 个评论
if true
end
lines should not keep appearing around every bit of code. I don't really know why the '{} Code' button is setup to do this as so many people end up with it included in their code. Also don't include the lines of your question in the middle of one large code block - it is very confusing to read and separate out what is actually code and what is part of the question information.
I did the editing for you this time.
回答(2 个)
function main
x = [3 7.5 0 -0.03];
y = f(x)
function y = f(x)
i = find(x==0);
x(i) = 1;
y = sin(x)./x;
y(i) = 0;
end
Best wishes
Torsten.
3 个评论
Or a little bit simpler:
function y = f(x)
y = sin(x) ./ x;
y(x==0) = 0;
end
@xosro: Do not confuse a "handle function" with an "anonymous function", which is accessed by a "function handle".
My guess is that this function cannot be defined as a "one-liner" as
f=@(x)....
Best wishes
Torsten.
A function (see Torsten's answer) will be nicer and more efficient than an anonymous function. But if you realy have any good reasons:
f = @(x) sin(x) / [Inf(x==0), x(x~=0)];
This works for scalar x only. This would be better, because it is immediately clear, what it does:
function y = f(x)
y = sin(x) ./ x;
y(x==0) = 0;
end
7 个评论
Stephen23
2017-5-4
outval = f(inval)
Jan
2017-5-4
@xosro: What exactly is your question? Using a function is trivial: as Stephen wrote you use it exactly like you would call an anonymous function also. The only difference is that the function can use multiple commands and has more power. So please explain, what your problem is with using this function, because I do not see any difficulties yet.
xosro
2017-5-4
Jan
2017-5-5
@xosro: The term "conditional handle function" is not defined.
If your function needs many variables, simply define them as inputs or write a "nested function" (search in the documentation for details). If the function is larger, using an anonymous function is even a worse idea, because you cannot exmine it using the debugger.
xosro
2017-5-5
Jan
2017-5-8
Avoid global variables. They cause more troubles than they solve. If you do not want to provide too many arguments, store them in a struct.
类别
在 帮助中心 和 File Exchange 中查找有关 Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!