2014-06-29 12 views
0

contrôlé Je suis en train de générer un vecteur aléatoire de nombre entier avec les caractetistics suivants:Matlab: générer un vecteur aléatoire

min(V) = my_min; max(v) = my_max; 
If I suppose to divide the vector in some intervals, e.g.: 
V = [my_min, v1, v2, v3,...,my_max]; 
first interval is my_min, v1; 
second one interval is v1,v2 
etc 

Plût à générer un nombre différent de valeurs beetwen chaque intervalle et chaque intervalle doit avoir seulement valeurs uniques. Je pensais randperm mais je ne peux pas définir les intervalles minimum et maximum, par ex. V1 V2 Par exemple, je recevrais le vecteur suivant où

my_min = 0; 
my_max = 65; 
V1 = 10; 
V2 = 20; 
V3 = 50; 
V4 = 60; 
V = [0 1,2,5 10, 13,14, 20,25,45,46,48,50,55,56,58, 60,61,62,65] 

Répondre

0

L'utilisation randperm fera, décaler juste le résultat.

Je vais essayer d'écrire le code:

nodeValues = [0, 10, 20]; 
numRandNumbers = [7, 6]; 

for ii = 2:length(nodeValues) 
    randNumArray{ii - 1} = nodeValues(ii - 1) + randperm((nodeValues(ii) - nodeValues(ii - 1)), numRandNumbers(ii - 1)); 
end 

Cela fera le travail.
Faites attention, j'ai écrit le code hors de mon esprit, il pourrait avoir besoin d'une révision.

+0

Ok, le code génère une cellule randNumArray de deux matrices. randNumArray = [1x7 double] [1x6 double] Comment puis-je faire pour obtenir un seul vecteur, dans ce cas, une cellule triée? Merci – Mixo

+0

Eh bien j'ai résolu avec sort (cell2mat (randNumArray)); – Mixo

Questions connexes