从matlab中的文本文件中读取函数

时间:2012-11-07 10:25:32

标签: matlab file-io input

我将从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)

1 个答案:

答案 0 :(得分:3)

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

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


第一个问题:您文件funct.txt的每一行都必须定义inline function

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

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

您可以使用命令inline

从中获取函数
    f1 = inline(str,'x','y');

给你(matlab输出)

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

现在,您可以使用f1将其称为f1(x,y),无论值x,y是什么。

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

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

  f1 = inline('(x^2)-3y','x','y','z');
顺便说一句,变量z将不起作用。尽管如此,当您致电f1时,您需要指定第三个虚拟参数。