osyan
osyan

Reputation: 1856

read function from text file in matlab

I'm going to read some function from a Unicode text file in matlab and calculate there answer with my own variables. first i use fopen to read the text file, then what should i do to convert each line of that text file to a function? for example the func.txt contains:

(x^2)-3y
sin(x+z)+(y^6)

and i need to write an m.file which read func.txt and process that like this:

function func1[x,y] =  (x^2)-3y
function func2[x,y,z] =  sin(x+z)+(y^6)

Upvotes: 2

Views: 1105

Answers (1)

Acorbe
Acorbe

Reputation: 8391

Preamble: if your final aim is to use those functions in matlab (i.e. evaluate them for some values of x,y,...), I would rather suggest the following approach that looks more robust to me.

In principle, in fact, you don't need to manipulate the file funct.txt to evaluate the functions defined therein.


First problem: each line of your file funct.txt must define an inline function.

Say that the first function (i.e., the first line) of the file funct.txt has been copied into a string str,

    str = '(x^2)-3y',

you can obtain a function from it using the command inline:

    f1 = inline(str,'x','y');

which gives to you (matlab output)

    f1 =
 Inline function:
 f1(x,y) = (x^2)-3y.

Now you can use f1 just calling it as f1(x,y), for whatever values x,y.

Second problem: you have to parse your file funct.txt to obtain the strings str containing the definitions of your functions. That's easier, you may want to consider the function fgets.

Third problem: the functions in funct.txt may depend on 2,3 (or more?) independent variables. As far as I know there is no easy way to parse the string to discover it. Thus, you may want to define each inline function as depending on all your independent variables, i.e.

  f1 = inline('(x^2)-3y','x','y','z');

the variable z will play no active role, by the way. Nonetheless, you need to specify a third dummy parameter when you call f1.

Upvotes: 3

Related Questions