Function with Non Constant Variable
Show older comments
Hello,
I'm wondering if there's a way to run this code while keeping x a variable (Instead of inputting a number for the required input 'x', have a variable so I can create a graph of results). Currently I just recieve output 'Unrecognized Function or variable 'x', even when putting sym x in the code.
Thanks for any help!

4 Comments
Adam Danz
on 26 Oct 2020
Please provide example inputs.
User7605
on 27 Oct 2020
per isakson
on 27 Oct 2020
x must have a value, e.g.
%%
x = 17;
S(3,1,x,2)
Adam Danz
on 27 Oct 2020
" I want the x input to work as a variable"
This part is still unclear, hence the variety of answers. Do you mean you want to pass a variable to the 3rd input (see per isakson's or Stephen Cobeldick's answer) or do you mean that the 3rd variable should be a symbolic variable (see Walter Roberson's answers).
Answers (3)
Stephen23
on 27 Oct 2020
You could create an anonymous function:
fun = @(x) S(3,1,x,2);
..
fun(17)
Walter Roberson
on 27 Oct 2020
0 votes
syms x
output = S(3, 1, x, 2);
disp(output)
output = S(3, 1, 4, 2);
disp(output)
function SF = S(F, a, x, n)
if isa(a, 'sym') || isa(x, 'sym')
SF = piecewise(x >= a, F*(x-a)^n, 0);
elseif x >= a
SF = F.*(x-a).^n;
else
SF = zeros(size(x));
end
end
1 Comment
Walter Roberson
on 27 Oct 2020
[Please preserve the above for investigation of a system problem.]
syms x
output = S(3, 1, x, 2);
disp(output)
output = S(3, 1, 4, 2);
disp(output)
function SF = S(F, a, x, n)
if isa(a, 'sym') || isa(x, 'sym')
SF = piecewise(x >= a, F*(x-a)^n, 0);
elseif x >= a
SF = F.*(x-a).^n;
else
SF = zeros(size(x));
end
end
Categories
Find more on Mathematics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!