假设我想在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.b
和s.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