Make matlab use a function from a certain toolbox

18 ビュー (過去 30 日間)
Mariella Dreißig
Mariella Dreißig 2019 年 9 月 9 日
コメント済み: Stephen23 2019 年 9 月 10 日
I want to use a function ('dist' for quaternions) from an installed toolbox. Matlab obviously uses another function with the same name and throws an error 'Unable to use a value of type 'quaternion' as an index.'
How do I include a certain toolbox and make matlab use this specific function from that toolbox? Or does anybody has any idea why the function 'dist' is not working with two quaternions?
  3 件のコメント
Rik
Rik 2019 年 9 月 9 日
This thread might help solve your issue, although it should already sort this out automatically. What does which dist -all return?
Mariella Dreißig
Mariella Dreißig 2019 年 9 月 10 日
dist is a variable.
C:\Program Files\MATLAB\R2019a\toolbox\shared\rotations\rotationslib\+matlabshared\+rotations\+internal\@quaternionBase\dist.m % Shadowed quaternion method
the second one should be the right function, but cd-ing into the folder does not solve the problem

サインインしてコメントする。

採用された回答

Rik
Rik 2019 年 9 月 10 日
編集済み: Rik 2019 年 9 月 10 日
You have assigned something to a variable named dist. That will shadow all functions. The solution is not to use dist as a variable name. See this page for a description of the name precedence.
  2 件のコメント
Mariella Dreißig
Mariella Dreißig 2019 年 9 月 10 日
oh man I was wondering about that but I didn't see this because in the current script I don't have a 'dist' variable, it was loaded into the workspace from an external script.
Thanks a lot!
Stephen23
Stephen23 2019 年 9 月 10 日
"...it was loaded into the workspace from an external script."
The curse of scripts.
This is one of the reasons why experienced users prefer (and recommend) using functions.

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2019 年 9 月 10 日
If dist is a variable then the problem is not with MATLAB using the "wrong" function.
The best way to solve this problem is to rename your variable so it is not the same as the name of any function you need to call.
The second best way is to drop in a small function that you can pass your arguments into and which calls the function dist. Since it would be in a different workspace, it would not "see" the variable dist to have a problem with (unless you were to for some reason name a function parameter dist, and the cure for that problem is Don't Do That.)
  1 件のコメント
Mariella Dreißig
Mariella Dreißig 2019 年 9 月 10 日
I feel stupid now, I didn't see that it was loaded into the workspace from an external script.. thank you!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeIntroduction to Installation and Licensing についてさらに検索

タグ

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by