2

我将从 matlab 中的 Unicode 文本文件中读取一些函数,并用我自己的变量计算答案。首先我fopen用来读取文本文件,然后我应该怎么做才能将该文本文件的每一行转换为一个函数?例如func.txt包含:

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

我需要写一个m.file这样的读取func.txt和处理:

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

1 回答 1

3

序言:如果您的最终目标是在 matlab 中使用这些函数(即评估它们的某些值x,y,...),我宁愿建议以下对我来说看起来更健壮的方法。

原则上,事实上,您不需要操作文件funct.txt来评估其中定义的函数。


第一个问题:文件的每一行都funct.txt必须定义一个内联函数

假设文件的第一个函数(即第一行)funct.txt已经被复制成一个字符串str

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

您可以使用以下命令从中获取函数inline

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

这给了你(matlab输出)

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

现在,您可以将f1其称为 as f1(x,y),用于任何值x,y

第二个问题:您必须解析文件funct.txt以获取str包含函数定义的字符串。这更容易,您可能需要考虑 function fgets

第三个问题:中的函数funct.txt可能取决于 2,3 个(或更多?)自变量。据我所知,没有简单的方法可以解析字符串来发现它。因此,您可能希望将每个内联函数定义为取决于所有自变量,即

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

顺便说一句,该变量z不会发挥积极作用。尽管如此,您需要在调用时指定第三个虚拟参数f1

于 2012-11-07T10:36:13.380 回答