![How to define a piecewise anonymous function - 2019 05 31.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/222232/How%20to%20define%20a%20piecewise%20anonymous%20function%20-%202019%2005%2031.png)
How to define a piecewise anonymous function
42 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
the example code
syms x
continuous_function = x^2+x;
matlabFunction(continuous_function,'Vars',x)
gives me the anonymous function
@(x)x+x.^2
I would like a similar result for piecewise functions. However, the code
syms x
piecewise_function = piecewise( 0<x<1, x, 'otherwiseVal', 0 );
matlabFunction(piecewise_function,'Vars',x)
does not work.
Thanks for any help!
0 个评论
采纳的回答
Star Strider
2019-5-31
You need to use ‘logical indexing’:
piecewise_function = @(x) (x.^2+x) .* ((0<x) & (x<1));
x = linspace(-1, 2);
figure
plot(x, piecewise_function(x))
producing:
![How to define a piecewise anonymous function - 2019 05 31.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/222232/How%20to%20define%20a%20piecewise%20anonymous%20function%20-%202019%2005%2031.png)
6 个评论
ElPerroVerde
2020-5-16
THANK YOU SO MUCH!!!!!!!!!!!! I've been looking for something like this for months!!!
更多回答(1 个)
Walter Roberson
2020-5-16
If you use matlabFunction with 'file' option, then it will convert piecewise() into if/else in the generated code.
Note: because it uses if/else instead of logical indexing, the generated code will not be vectorized on that variable.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!