Function with Non Constant Variable

1 Ansicht (letzte 30 Tage)
User7605
User7605 am 26 Okt. 2020
Kommentiert: Adam Danz am 27 Okt. 2020
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 Kommentare
per isakson
per isakson am 27 Okt. 2020
x must have a value, e.g.
%%
x = 17;
S(3,1,x,2)
or maybe the Symbolic Toolbox lets you use a variable, x, without a value.
Adam Danz
Adam Danz am 27 Okt. 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).

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Stephen23
Stephen23 am 27 Okt. 2020
You could create an anonymous function:
fun = @(x) S(3,1,x,2);
..
fun(17)

Walter Roberson
Walter Roberson am 27 Okt. 2020

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 Kommentar
Walter Roberson
Walter Roberson am 27 Okt. 2020
[Please preserve the above for investigation of a system problem.]

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 27 Okt. 2020
syms x
output = S(3, 1, x, 2);
disp(output)
{3(x1)20 if  1x otherwise
output = S(3, 1, 4, 2);
disp(output)
27
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

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by