How to access randomly selected index in nested structures

I want to access intexes that are into a structure that are nested within another structure. I have this code working through every ith element, and I want to add to the code randomly selected values j. In my case j is from 1 to 365 day of the year.
for i=1:n
fileName=structName(i).nestedStructName(j).name
end
Any ideas?
Darina

 Réponse acceptée

Try something like this:
for i=1:n
X = fieldnames(structName);
n = length(X);
fileName=structName(i).(X{randi(n)}).name;
end
The issue is that your nestedStucture has multiple fields and you wanna pick one randomly.

Plus de réponses (2)

How about
fileName=structName(i).nestedStructName(randi(365,1)).name
Is this what you are looking for?

7 commentaires

Hey thank you! But it keeps saying Reference to non-existent field 'demand_pattern'. I tried different things and I only get this error.
Does nestedStructName have 365 elements?
yes, why ?
Could the problem be in this -> structName(i) has 1xn struct while for j there are nestedStructName1,...,nestedStructName365 each has 1x1 struct?
Just before entering the for-loop add:
[rS, cS] = size(structName)
[rnS, cnS] = size(structName(rS).nestedStructName)
What do you get?
[rS, cS] = size(allFileMin)
[rnS, cnS] = size(allFileMin(rS).demand_pattern)
the answer:
rS =
1
cS =
28
Reference to non-existent field 'demand_pattern'.
Error in Activity (line 136)
[rnS, cnS] = size(allFileMin(rS).demand_pattern)
This happends because I only have nestedStructName1 to nastedStructName365 but not a single naestedStructName without index.

Connectez-vous pour commenter.

Shivaputra Narke
Shivaputra Narke le 28 Jan 2014
May this works,
for i=1:n j=1+round(364*rand(1)); fileName=structName(i).nestedStructName(j).name end

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by