To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016
I am just writing an object oriented code in Matlab. I need every object of my classes to know how many instances of that particular class has been made. I have tried persistent data variables or static methods. But no use! I appreciate any help.
Here is how I would attack this, (and let me reiterate, I don't know why you need this, there is probably a better way).
I would have singleton class:
That stores members of the other class. Let's call the singleton class, S.
Now you create one of your objects that needs to know about others, let's call it K. K first finds if an object of class S exists, if it does not, then it creates one. If it does, it calls a static method of this S object that bumps up the count. It also, adds a listener to S listening for it's own being deleted event. Now if this object of class K is deleted, the S object can remain up to date.
Alternatively, you could use findobj as is described here to look for some dummy property that all K objects have:
This is probably the easier way to do this.
I have gone over the Matlab documents and so far I have understand these:
For this task we need a variable with global scope. This is not a good idea, because I want just my class to access it. What I used was a "Static" method along with a "Persistent" variable in it. In this way, in any instant you could just call "MyClass.Method" and find out the value of it. But, and this is a Big BUT... In my case which I wanted to know how many instant of the class have been made so far, this works up until you want to clear an object of the class. Then you should decrease the variable by calling this static method. And when you have called this method you could not delete the object!!!! And the big BUT is this contradiction. I gave up on this because I don't have more time to spend on it. And, I "strongly recommend"!! :-) you to do so, or use the "Sluggish" Global variable if you need it so bad.