How to fix this error ? "attempt to reference field of non-structure array"

5 ビュー (過去 30 日間)
houda mejri
houda mejri 2017 年 3 月 29 日
コメント済み: Walter Roberson 2020 年 2 月 9 日
Hello, I had this error by declaring testset and classify as global variables. do you have an idea ? thank you
<<
>>
  1 件のコメント
Stephen23
Stephen23 2017 年 3 月 29 日
編集済み: Stephen23 2017 年 3 月 29 日
Aaah, global variables and buggy code (that is almost impossible to debug).
Where is the variable defined? How many functions can access it? When and how is its value changed?
So many questions, and so few answers. Globals are the least recommended way of passing data between workspaces, and come second on this list of bad code practices:
Buggy, and all experts avoid using them... why would anyone even want to use them?

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

回答 (2 件)

Jan
Jan 2017 年 3 月 29 日
編集済み: Jan 2017 年 3 月 29 日
Stephen's comment is exhaustive. Let me summarize it:
  • Obviously the variable testset has not been defined before or not in the required way.
  • Because it is a global variable, debugging is hard. You cannot directly find the code, which has (over-) written its value the last time.
  • This is the expected and known problem with global variables. If the variables are provided as inputs, it is trivial to use the debugger to find the source of the last change.
Poor solution: Dig in your code until you find the bad declaration of the global variable.
Good solution: Remove the global variables from your code and use a clean providing of inputs and outputs - or even more secure an object oriented approach.
  4 件のコメント
Jan
Jan 2017 年 3 月 29 日
@houda: Now you can provide the dataset and teh classifier as inputs to myfunctiontominimize, see e.g. http://www.mathworks.com/matlabcentral/answers/1971
houda mejri
houda mejri 2017 年 3 月 29 日
@jan Simon thanks a lot

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


Joshah Magdalene
Joshah Magdalene 2020 年 2 月 9 日
I too have the same error.
Attempt to reference field of non-structure array.
I find this error in the below line of my code.
index = int32(pose.subset(j))+1;
I will be grateful if it is sorted out. Thank You!
  4 件のコメント
Joshah Magdalene
Joshah Magdalene 2020 年 2 月 9 日
Thank you!
I have another query.
Is there any function like subset() and candidate() in Matlab?
If so what do they do?
Thanks in advance!
Walter Roberson
Walter Roberson 2020 年 2 月 9 日
I do not find functions by those names in MATLAB. Possibly some third-party toolbox.

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by