简化矩阵matlab
我正在用matlab做一些矩阵计算。(对我来说)奇怪的是我得到的结果是简化矩阵matlab,matlab,matrix,computation,simplification,Matlab,Matrix,Computation,Simplification,我正在用matlab做一些矩阵计算。(对我来说)奇怪的是我得到的结果是 (8700286382685973*cos(q5)*sin(q4))/9007199254740992 + sin(q5)*((43220913799951902644522757965203*cos(q4))/730750818665451459101842416358141509827966271488 - 291404338770025/1125899906842624) 但是matlab并没有简化结果。我已经尝试过
(8700286382685973*cos(q5)*sin(q4))/9007199254740992 + sin(q5)*((43220913799951902644522757965203*cos(q4))/730750818665451459101842416358141509827966271488 - 291404338770025/1125899906842624)
但是matlab并没有简化结果。我已经尝试过使用像simplify
,simple
,fix
这样的函数,但没有一个能达到预期的效果
关于我应该使用什么函数有什么建议吗?Simplify只进行“精确”操作。您需要的是一个命令,它可以删除表达式中的小项。在数学中,“斩”处理这个问题。试着用谷歌搜索一下。正如@Lucas所建议的,你可以在matlab中使用vpa和数字,例如,如果上面的表达式是A(sym),那么: 然后你可以看到数字并切掉它们,或者使用类似于:
function result = significant(x, n)
% significant(x, n) rounds number x to n number of significant figures
s = floor(log10(abs(x)));
shift = 10^(n-1);
mant = round(x*shift/(10^s)) / shift;
result = mant * 10^s;
在评估之前,请尝试执行以下命令之一:
format longe
format shorte
你怎么知道会更简单呢?除了“我想是的”?因为
432209137999519026445227557965203/730750818665145910184241635814150982796271488
几乎是0。好的,所以你只剩下第一个学期了。这些常数在我看来也是可疑的。你是怎么得出这个结果的?背后的故事是什么?我遵循Denavit-Hartenber约定来计算机械手的直接运动学。但是我不认为这是相关的…即使把这些值放在手上,我也希望matlab能简化结果。但是几乎为零并不是真的为零,就像几乎怀孕是真的怀孕一样。这是一个象征性的解决办法。如果你想要一个数字答案,那么vpa可以帮上一点忙。
format longe
format shorte