'Domain error. To compute complex results from real x, use 'acos(complex(x))' error in matlab?
117 次查看(过去 30 天)
显示 更早的评论
hi.i want to simulate ur10 inverse kinematic and I did it.while running there is this error:
Domain error. To compute complex results from real x, use 'acos(complex(x))
how can I fix it?
the error is general and I don't know which line should be changed. there are several acos in the code .
X is the endeffector position and it can not be complex.
I have attached the Simulink file.
2 个评论
Sebastian Castro
2018-8-13
编辑:Sebastian Castro
2018-8-13
Unfortunately, "changing them all" wouldn't help in this case.
It actually doesn't have to do with the input being complex, but rather the input being outside the real valued range [-1,1] of the cos function.
Refer to my Answer below.
采纳的回答
Sebastian Castro
2018-8-13
编辑:Sebastian Castro
2018-8-13
Hi Najmeh,
If you supply a value greater than 1 or smaller than -1 to the acos function, you get a complex number. Simulink seems to be complaining about that in your code.
Theta5=acos(argumancos5);%negetive or positive answer?
Seems like at the very first time step, argumancos5 is exactly 1, but due to numerical issues, it's actually slightly higher than 1 which leads to your error. Computing the value argumancos5 - 1 gives me 3.1086e-15... so it's just outside the range in which the cosine is real-valued.
I limited the value of this input to the range [-1, 1] and it seems to have fixed the error:
argumancos5 = max(min(argumancos5,1),-1);
Theta5=acos();%negetive or positive answer?
- Sebastian
7 个评论
Aks Lyu
2019-12-11
This is the answer!
But why MATLAB does not point out which line (file) the error occures in?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 General Applications 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!