Bonjour,
Deux nouveaux défis à optimiser.
Premier problème :
J'ai une matrice vide zeros(L,C).
Je veux que les 1 à N éléments consécutifs de chaque ligne soit des 1 où N est un nouveau nombre aléatoire de 1 à C pour chaque ligne. Je tiens aussi à ce que ce soit aussi rapide que possible, considérant des valeurs de L et C pouvant dépasser 100.
Exemple avec L = 20 et C = 10 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part X = ones(L,1)*(1:C) <= ceil(rand(L,1)*C)*ones(1,C);
Deuxième problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 X = 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0
J'ai une matrice logique vide false(L,C).
Je veux faire passer à true un seul élément par ligne et ce aléatoirement. Je tiens aussi à ce que ce soit aussi rapide que possible, considérant des valeurs de L et C pouvant dépasser 100.
Voici ce que je fais actuellement :
Exemple avec L = 20 et C = 10 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 X = false(C,L); X(ceil(rand(1,L)*C+(0:C:(C*(L-1))))) = true; X = X';
Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 X = 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Éric
NB, quelques observations :
- L'utilisation de ceil(rand()) est plus rapide que randi()
- Les produits vectoriels sont plus rapides que meshgrid() et repmat()
- La comparaison de matrices ajustées à la même taille semble plus rapide que l'utilisation de bsxfun()
Partager