Reputation: 1856
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
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