Convert a string into a function of x

61 Ansichten (letzte 30 Tage)
Nikolas Spiliopoulos
Nikolas Spiliopoulos am 21 Nov. 2018
Bearbeitet: KRISHNA MAHTO am 12 Jan. 2023
Hi all,
I have created a string like this:
Sstr = join(compose('(x(%d:%d)-x(%d:%d))))', A), ' + ')
so I get a result:
Sstr='(x(2:180)-x(1:179)+(x(182:360)-x(181:359))'
Is it possible to convert the string into a function of x like this??:
f=@(x) (x(2:180)-x(1:179)+(x(182:360)-x(181:359))
thanks
Nikolas
  1 Kommentar
Nikolas Spiliopoulos
Nikolas Spiliopoulos am 21 Nov. 2018
Here is the code
A=[2 180 1 179 182 360 181 359];
str = join(compose('(x(%d:%d)-x(%d:%d))', A), ' + ')

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 21 Nov. 2018
Bearbeitet: Stephen23 am 21 Nov. 2018
You can use str2func:
fun = str2func(['@(x)',Sstr]);
and then call it just like any other function.
  4 Kommentare
Nikolas Spiliopoulos
Nikolas Spiliopoulos am 21 Nov. 2018
Well I solved my problem by converting the cell to a character like this:
g = cell2mat(Sstr)
f = str2func(['@(x)' g])
thanks for the comments !
Stephen23
Stephen23 am 21 Nov. 2018
@Nikolas Spiliopoulos: you should check the contents of g to make sure that they make sense.
Don't forget to accept my answer if it helped you!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

KRISHNA MAHTO
KRISHNA MAHTO am 12 Jan. 2023
Bearbeitet: KRISHNA MAHTO am 12 Jan. 2023
i have taken string as an input form the user ,, and want data to be converted into funtion of x and y , by the program itself ,,,for easy usage ,
%code to take input form the user -
prompt = "input U:-"
prompt = "input U:-"
u = input(prompt,"s")
Unable to run the 'fevalJSON' function because it calls the 'input' function, which is not supported for this product offering.
prompt = "input V:-"
v = input(prompt ,"s")

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by