'Domain error. To compute complex results from real x, use 'acos(complex(x))' error in matlab?
60 ビュー (過去 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!