Scilab et complications

Résolu/Fermé
sijesuislac'estquecavapas Messages postés 2 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 mars 2009 - 27 mars 2009 à 21:39
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 27 mars 2009 à 23:00
Bonjour,
Triste bonjour à tous parce que désespérée mais bonjour kan même en espérant que kelkun va pouvoir m'aider...
voici mon pb:

sous scilab,

je veux construire R réalisations (R est fixe) de vecteurs de tailles N différentes .

Je ne veux pas utiliser une matrice de type R lignes N colonnes en prenant le plus grand de mes N car cela me stocke beaucoup trop de zéros pour combler les valeurs manquantes, ce qui me pique de la place inutilement.
et j'ai besoin du max de place!!!! car je veux travailler avec des R=1000 et des Z pouvant être compris entre 2 et 10000.

Je pensais pouvoir faire ça avec une matrice de type P=(1,n,r)
r allant de 1 à R
et n varie de 1 à 10000
Mais le méchant scilab il veut pas :
si je rentre par exemple pr r=1 N=4 (avec comme valeur que des 9 )
P(1,:,1)= 9 9 9 9
puis que je fais pr r=2 N=8
P(1,:,2)= 9 9 9 9 9 9 9 9 OK
MAIS P(1,:,1) devient 9 9 9 9 0 0 0 0 PAS OK DUTOUT
je voulais:
P(1,:,1)= 9 9 9 9
P(1,:,2)= 9 9 9 9 9 9 9 9
P(1,:,3)= 9 9 9 9 9 9
P(1,:,4)= 9 9 9 9 9 9 9 9 9 9 9 9 9
P(1,:,5)= 9
etc...
Voila si quelqu'un peut m'aider ce serait magnifique voir de toute beauté parce ke la moi je sais pas.
alors merci d'avance a tous!!!
A voir également:
  • Scilab et complications
  • Scilab - Télécharger - Édition & Programmation

1 réponse

Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 834
27 mars 2009 à 23:00
Salut

Ce que t'essaies de faire pourra jamais marcher de cette manière. Quel que soit le nombre de dimensions d'un tableau, tes lignes, tes colonnes, tes pages, etc... ont toujours la même taille. Là c'est ni plus ni moins une matrice que t'essaies de définir, certes, il y 3 dimensions mais la première ne sert pas. Ici, de la façon dont tu t'y prends, tu cherches à définir une matrice dont la taille de chaque colonne changerait, c'est tout à fait normal que Scilab patche par des zéros pour garder des tailles de colonnes constantes.

Ton truc, tu peux le faire en utilisant des objets de type cellule.
R=2;
P=cell(R,1);
P(1,1).entries=[9 9 9 9];
P(2,1).entries=[9 9 9 9 9 9 9 9];

Et voilà...
-->P
 P  =
 
 
![9,9,9,9]          !
!                   !
![9,9,9,9,9,9,9,9]  !
 
-->P(1,1).entries
 ans  =
 
    9.    9.    9.    9.  
 
-->P(2,1).entries
 ans  =
 
    9.    9.    9.    9.    9.    9.    9.    9.
Mais je suis pas sûr que le stockage en cellules soit quelque chose de top moumoute au niveau mémoire, ce serait à vérifier... Si ça se trouve c'est même pire que de stocker la matrices avec tous ses zéros :-D

Du coup, ce que je te conseillerais plutôt, c'est de stocker tout ça dans une matrice de R lignes et Nmax colonnes. Et là... t'es en train de te dire...
Mais il complètement idiot celui-là ! Il sait pas lire ou quoi ? J'ai écrit que je voulais pas faire comme ça !

Viiii ! Mais attends !
Tu stockes ta matrice en sparse, c'est-à-dire que tu stockes en mémoire que les valeurs non nulles.
R=2;
Nmax=8;
P=sparse([],[],[R Nmax]);
P(1,1:4)=[9 9 9 9];
P(2,1:8)=[9 9 9 9 9 9 9 9];
Hop ! C'est bon !
-->P
 P  =
 
(    2,    8) sparse matrix
 
(    1,    1)        9. 
(    1,    2)        9. 
(    1,    3)        9. 
(    1,    4)        9. 
(    2,    1)        9. 
(    2,    2)        9. 
(    2,    3)        9. 
(    2,    4)        9. 
(    2,    5)        9. 
(    2,    6)        9. 
(    2,    7)        9. 
(    2,    8)        9. 
Et pour terminer...

Merci d'arrêter les kan, kelkun, ke, c'est détestable à lire.
CCM - Charte - Conseils d'écriture d'un message
Il est également demandé aux utilisateurs de s'appliquer lors de la rédaction de leur message en évitant au possible les abréviations (type SMS) et en vérifiant l'orthographe.
Merci de pas poster de doublon.
CCM - Charte - Respect d'autrui
ne pas poster votre message plusieurs fois sur le forum
Bonne nuit
0