How to figure out the number of objects in a workspace?

I have taken the workspace function whos and assigned it to variable obj. How do I then find the number of objects in the workspace?
I have:
obj = evalin('base','whos');
%then I go into a loop
count=0;
while(true)
count=count+1;
something=obj(count).class;
%do something
end
Is there a way to find length or sizof obj.class?

 Réponse acceptée

a=whos;
nObj = size({a(:).size},2);
clear a; %to keep the same number of objects; also assuming a _wasn't_ a variable before.
Thus instead of calling it 'a', I would probably call it something like:
hjsdkjfdlsw6237
or
['dklsfjldrf' dec2hex(floor(rand*1000000))]

2 commentaires

That works well, but I in addition to clearing a I think also subtracting 1 is important like Arnaud suggests.
That part isn't clear to me:
clear
a = whos;
length({a.size})
ans =
0
I'd think you might want to add one, since now there is a variable (_a_), actually in this case two variables (_a,ans_)

Connectez-vous pour commenter.

Plus de réponses (1)

Arnaud Miege
Arnaud Miege le 9 Août 2011

0 votes

How about length(obj)? Note that this will include obj itself, so you may want to subtract 1.
Arnaud

2 commentaires

hmm, that doesn't work for me.
If I have:
obj=whos;
Then how do I find the number of objects in obj.class?
I don't think you need obj.class. length(obj) with give you the number of object in the workspace + obj itself.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by