我将从 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)
序言:如果您的最终目标是在 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
。