Poster un nouveau sujet Poster une réponse
stocage de listes en TI basic sur TI82stats (stoqué en pic)
Auteur Message
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mar 02 Aoû 2011, 18:53   Citer 

Bonjour/bonsoir,
voici un programme qui permet d'archiver-désarchiver des nombre entiers postifs allant de 0 à 2^19-1dans une image (une liste de 315 termes max est prise en entrée, une de 315 termes est renvoiée en sortie).

ARCHIVNB.83p

Code
StorePic 1
StoreGDB 1
PlotsOff
FnOff
GridOff
AxesOff
ClrDraw
Menu("CHOISIR:","COMPRESSER",CO,"DECOMRESSER",DE
Lbl DE
Menu("DECOMPRESSION:","GRAPH",C,"Pic4",D,"Pic5",E,"Pic6",F,"Pic7",G,"Pic8",H,"Pic9",I
Lbl C
RecallPic 1
Goto J
Lbl D
RecallPic 4
Goto J
Lbl E
RecallPic 5
Goto J
Lbl F
RecallPic 6
Goto J
Lbl G
RecallPic 7
Goto J
Lbl H
RecallPic 8
Goto J
Lbl I
RecallPic 9
Lbl J
DelVar [théta] {0 -> L1
For(Y,0,62
For(B,1,5
DelVar D [théta]+1 -> [théta]
For(X,19B-1,19B-19,-1
2D+pxl-Test(Y,X -> D
End
D -> L1([théta]
End
End
Stop
Lbl CO
Disp "LISTE:","-315 NOMBRES MAX","-524287 MAX:"
Prompt L1
315 -> dim(L1
For(A,1,315
95fPart(19A/95)-19+95(X<0 -> X
iPart(A/5-.1 -> Y
L1(A -> B
While B
.5B -> B
If fPart(B
Pxl-On(Y,X
iPart(B -> B
X+1 -> X
End
End
Menu("SAUVER DANS :","GRAPH",3,"Pic4",4,"Pic5",5,"Pic6",6,"Str7",7,"Pic8",8,"Pic9",9
Lbl 3
Stop
Lbl 4
StorePic 4
Stop
Lbl 5
StorePic 5
Stop
Lbl 6
StorePic 6
Stop
Lbl 7
StorePic 7
Stop
Lbl 8
StorePic 8
Stop
Lbl 9
StorePic 9



Sandro

PS: l'archivage-désarchivage est assez long

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 03 Aoû 2011, 13:50   Citer 

C'est rentable ce genre de compression ?
ça doit donner de jolies images...

Je teste ça tout de suite.

EDIT:

A un moment, j'ai une err Domain sur "Pxl-On(Y,X" . Y=0 et X=-19.

normal ou pas ? (ma liste contenait un nombre a virgule, c'est grave ?

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 03 Aoû 2011, 15:36   Citer 

Cela doit être un peu lent.
Je doûte que cela soit rentable vue la mémoire des pics.
Néanmoins un tel stokage peut permettre d'archiver des valeurs discrètement.
Perso je privilégierai un prog façon anti-sèche.


:95fPart(19A/95)
Calcule un reste. Mais il peut y avoir une erreur d'arrondit.
L'autre calcul de reste plus stable est :19A-95iPart(19A/95)
EDIT : le problème signalé précédemment vient du nombre à virgule donné dans la liste.


Il est peut-être possible d'augmenter le maximum de chaque nombre au dépend de leur quantité.
(avec la méthode Binaire Codé Décimal dans une grande base (autre que 10))

D'ailleurs j'ai bossé sur une méthode de stockage d'image qui SEMBLE être juste le contraire de ce stockage de nombres.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 03 Aoû 2011, 17:53   Citer 

C'est normal que ça bug si tu utilise un nombre à virgule, [moi] un programme qui permet d'archiver-désarchiver des nombre entiers postifs allant de 0 à 2^19-1[/quote] ça vient du fait que l'encodage ce fait en binaire et que la conversion dec->bin est difficile pour les nombres décimaux (il faut un système de chiffres signifficatifs assossiés à une puisaance de 10).

Pour l'utilité, elle est quand même non négligeable (764 pour une image contre 2844 pour une liste de 315 termes).

Pour les belles images, je n'ai pas trop testé, mais j'ai bien aimé:

Code
Suite(X²+X,X,1,315



Sandro

PS : on peut aussi s'en servir pour stocker des images, mais ce n'est pas du tout optimisé pour.

Sinon, pour stocker les pic en liste, je crois que c'est toujour moins optimisé que le pic lui même car dans la mémoire interne, tout est en binaire/héxadécimal donc 1 octé=8 pixels donc 9 octés (la taille d'unterme d'une liste)=72 pixels, il faudrait donc pouvoir stocker des nombres dans chaque terme de façon à avoir au moins 2^72-1=4.722366483.10^21 possibilitées différentes, hors un nombre ne contient que 14 chiffres significatifs + même pas 3 de placement de la virgule soit même pas 17 chiffres en tout, donc pas même 1.10^17 possibilitées : on est loin du compte pour avoir une optimisation équivalente.

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 04 Aoû 2011, 11:20   Citer 

avec 14 chiffres significatifs, j'avais fait un programme qui permettait d'enregistrer des images en listes sans pertes d'octets, mais il devait y avoir max de 7 pixels allumés par verticale.

Je pense qu'on peut pas faire mieux.

PS: jolie la suite !

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Jeu 04 Aoû 2011, 12:20   Citer 

Oui, on peu faire souvant mieux, mais ça ne marche pas toujours, ça dépond du dessin (par example en ne notant que les longueurs de chaque conleur ( L(noirL(blanc)*10+L(noir)*100+...) ).

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes