我将从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)
答案 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
时,您需要指定第三个虚拟参数。