Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简化矩阵matlab_Matlab_Matrix_Computation_Simplification - Fatal编程技术网

简化矩阵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并没有简化结果。我已经尝试过

我正在用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