如何存储 Matlab 命令的输出(类似于 UNIX 中的管道)?

如何存储 Matlab 命令的输出(类似于 UNIX 中的管道)?

我正在这个社区询问这个问题。如果这不正确,请告诉我以及我应该使用哪个社区。

我正在尝试使用以下方法在 Matlab 中评估积分:

int(x^(2)*sin(n*x),x)

它将返回:

(2*x*sin(n*x))/n^2 - cos(n*x)*(x^2/n - 2/n^3)

然后我想在特定值处评估该积分的结果(类似于定积分,但如果我需要插入许多不同的点,我不希望一遍又一遍地重新计算积分)。有没有办法将积分的结果存储为函数?我试过:

f = @(x) int(x^(2)*sin(n*x), x)

但是如果我想f在 0 处求值,f(0)尝试执行:int((0)^(2)*sin(n*0), x),而我希望它执行:(2*(0)*sin(n*(0)))/n^2 - cos(n*(0))*((0)^2/n - 2/n^3)。本质上,我希望 Matlab 进行积分,然后在某个值处求值,而不必将int()命令的结果复制并粘贴到下一行?我会将其与管道在 Linux 中,我想将int()调用的输出通过管道传输到下一行,并将其结果评估为特定值。有办法做到这一点吗?

答案1

我使用以下方法解决了我的问题:

f = symfun(int(x^(2)*sin(n*x),x),x);

现在我可以f(0)随心所欲地使用了。如果我想切换到数值计算,我还发现了以下内容:

fn = matlabFunction(f)

答案2

您可以通过保存已解方程的符号版本来实现这一点。

sums n x

f = sym('int(x^(2)*sin(n*x),x)')

f 现在是

(2*x*sin(n*x))/n^2 - cos(n*x)*(x^2/n - 2/n^3)

使用命令 pretty(f) 可以干净地查看。

要使用此等式获得数字答案,请使用 subs() 命令:

subs( f, [x n], [1,5])

我没有可用的 matlab 来检查我的语法,但如果这是您正在寻找的功能,它应该足以帮助您入门。

相关内容