说我想在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
才能看到结果。我只想直接查看结果。
答案 0 :(得分:2)
如果将structfun
包裹在solve(eqns,vars)
周围,它将在结构的所有字段上运行并应用函数。因此,使用函数f=@(x) x
只会打印解决方案。
structfun(@(x) x, solve(eqns,vars))
答案 1 :(得分:1)
根据您的评论,您需要一种在结果s
(s=solve(eqns,vars)
)中循环显示所有解决方案的方法。
在这种情况下,s
是struct。这是遍历struct字段的问题。您可以使用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