如何让Matlab在没有赋值的情况下直接显示解决方案



假设我想在Matlab:中求解一个简单的方程组

syms a b
eqns=[a+b==4,a-b==2];
vars=[a,b];
solve(eqns,vars)

结果很烦人:

ans = 
struct with fields:
a: [1×1 sym]
b: [1×1 sym]

我只想让Matlab显示变量的值。有没有一种方法可以在不使用的情况下查看解决方案

[asol,bsol]=solve(eqns,vars)

我也可以使用s=solve(eqns,vars),但我必须键入s.bs.b才能看到结果。我只想直接看看结果。

如果将structfun包裹在solve(eqns,vars)周围,它将在结构的所有字段上运行并应用一个函数。因此,使用函数f=@(x) x,它将只打印解决方案。

structfun(@(x) x, solve(eqns,vars))

根据您的评论,您需要一种方法来循环结果s(s=solve(eqns,vars)(,以显示所有解决方案。

在这种情况下,s是一个结构体。这是一个遍历结构字段的问题。您可以使用fieldnames函数返回字段名称的单元格数组(在本例中,是方程中的变量名称(:

syms a b
eqns=[a+b==4,a-b==2];
vars=[a,b];
s = solve(eqns,vars)
fields = fieldnames(s);
for i = 1:numel(fields)
s.(fields{i})
end

输出:

ans =
3

ans =
1

相关内容

  • 没有找到相关文章

最新更新