Applying a constant function on a vector
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I am writing a program for school. I need the user to input a function as a string, and then I need to process it.
What I am doing:
f = vectorize(inline(user_input_string));
x = linspace(0, 20, 20);
y = f(x);
...
This works perfectly except when the user inputs a constant function (such as f = 1). In order for my project to work, y must be a vector. But if the user inputs a constant function, Matlab automatically sets y to a sclalar, instead of a vector.
What can I do?
0 Commenti
Risposte (5)
Star Strider
il 22 Nov 2012
Modificato: Star Strider
il 22 Nov 2012
I'm not certain I completely understand your problem. However, you could test for a scalar and if something like f=1 was the input, perhaps set y to:
f = '1';
y = polyval(str2num(f), x);
If the test for a scalar was true, you could also consider something like:
user_input_string = sprintf('polyval(%s, x)', f);
Without knowing more, that's the best solution I can come up with.
2 Commenti
Star Strider
il 22 Nov 2012
If the user inputs a constant, what output for user_input_string do you want?
The polyval function outputs a vector of constant values equal to the scalar input value with a length equal to the length of your x-vector. It's the only option I can think of that's compatible with your user_input_string variable.
The version I posted earlier assumes the scalar is read in as a string. If you read f in as a numeric value instead, replace the %s with %f:
user_input_string = sprintf('polyval(%f, x)', f);
Matt Fig
il 23 Nov 2012
You can specify the variable in your call to INLINE. For example, this works even if the user enters 2:
f = vectorize(inline(input('Enter a func of x : ','s'),'x'));
2 Commenti
Matt Fig
il 23 Nov 2012
Ah, good catch...
I guess we could get fancy.
S = input('Enter a func of x : ','s');
f = vectorize(inline([S,'+zeros(size(x),class(x))'],'x'));
But, yuck.
Vedere anche
Categorie
Scopri di più su Function Creation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!