Vizitator cosmin800 Postat Septembrie 2, 2005 Partajează Postat Septembrie 2, 2005 stii careva daca exista vreun cod sursa pentru compresia datelor folosind un pic? am nevoie sa comprim aproximatic 450 de bytes in ceva mai mic. Link spre comentariu
cirip Postat Septembrie 2, 2005 Partajează Postat Septembrie 2, 2005 Hm... Interesant subiect, dar nu cred ca l-au abordat prea multi. Trage un ochi la linkul asta: http://www.piclist.com/techref/method/c ... bedded.htm Sau la asta: http://library.lanl.gov/numerical/bookcpdf/c20-4.pdf dar ai grija ca nu e ptr cei slabi de inger ;) Pentru o chestie mai generala cauta pe net "Huffman compression". Cod moca cred ca e mai greu de gasit, dar daca dibuiesti algoritmul, poate iti scrii singur codul. Cirip Link spre comentariu
bogdanm Postat Septembrie 2, 2005 Partajează Postat Septembrie 2, 2005 Vrei compresie sau decompresie? E important. Compresia ocupa in general mai multe resurse. De exemplu, Huffman-ul pomenit mai sus de Cirip nu-l vad realizat pe un PIC. Eu am implementat mai demult pe PC o treaba din asta si m-am speriat cand am vazut cam cat de mult poate sa ocupe. Pe de alta parte, pentru 450 bytes pot exista metode mai simple. Descrie ceva mai exact problema. Ce vrei sa comprimi si unde (pe PIC sau in alta parte)? Daca decomprimi pe PIC, unde vrei sa decomprimi (in ce memorie)? Samd :)EDIT: citind mai atent, se pare ca vrei sa comprimi pe PIC. Nasol Astept cu interes detalii despre ce vrei sa comprimi. Poate scapi cu un RLE ;) Link spre comentariu
Cristiano Postat Septembrie 2, 2005 Partajează Postat Septembrie 2, 2005 Compresia de date e un aspect destul de dificil de abordat cu resursele limitate ale unui microcontroller (mai ales unul pe 8 biti) si conduce in majoritatea cazurilor la un impact serios asupra vitezei de lucru. Daca ne dai ceva mai multe detalii despre aplicatia ta, poate gasim si alte metode de eficientizare. Link spre comentariu
Vizitator cosmin800 Postat Septembrie 3, 2005 Partajează Postat Septembrie 3, 2005 pai e vorba de nistea peak points de la un decodor adc, care stocate in memorie pentru prelucrare ulterioara, prelucrarea nu se poate real time deoarece implca calcule destul de complicate in float, tin sa precizez ca picul este un 18f2520 la 32 de mhz ...altceva nu mai stiu ce sa spun. rutine din calculator este ... unde v este un array de 400 de bytes ... void decode(int proc,int z_limit,char *out,size_t size) { int p=0,i=0; float sum=0; float med=0; float cp75=0; float exp=0; memset(out,0,size); for(i=0;i //printf("sum =%.3f\n",sum); med=sum/z_limit; //printf("med= %.3f\n",med); cp75=(float)proc/100*med; //printf("cp75=%.3f\n",cp75); exp=2/(float)z_limit+1; //printf("Exponent=%.3f\n",exp); for(i=z_limit;i { if((float)v>cp75) { strcat(out,"0"); med=(((float)v-med)*exp)+med; cp75=(float)proc/100*med; } else { med=(((float)(v+v[i+1])-med)*exp)+med; cp75=(float)proc/100*med; strcat(out,"1"); i++; }; } } Link spre comentariu
cirip Postat Septembrie 3, 2005 Partajează Postat Septembrie 3, 2005 Offf, iti scrisesem un pomelnic, dar mi-a crapat explorerul si s-a pierdut.Pe scurt: de ce lucrezi in float si nu lucrezi in intregi cu semn? Cred ca ar fi mai rapid.Cirip Link spre comentariu
Vizitator alex Postat Septembrie 4, 2005 Partajează Postat Septembrie 4, 2005 Nu e mai simplu sa pui o memorie langa PIC si sa stochezi acolo datele decat se te chinui cu compresia. Link spre comentariu
Vizitator cosmin800 Postat Septembrie 4, 2005 Partajează Postat Septembrie 4, 2005 pe int nu mi-au iesit calculele cum trebuie, este o memorie externa .... Link spre comentariu
cirip Postat Septembrie 5, 2005 Partajează Postat Septembrie 5, 2005 pe int nu mi-au iesit calculele cum trebuiePoti fi mai concret? Sau vrei sa ramai neconditionat pe float si calculele intregi nu prezinta nici un interes? Ce precizie iti trebuie (in procente)?Cirip Link spre comentariu
bogdanm Postat Septembrie 5, 2005 Partajează Postat Septembrie 5, 2005 Cam nasol. Datele astea au vreun fel de distributie mai speciala in timp? De exemplu, se repeta in general unele din ele? Sunt intr-o anumita secventa care poate fi prezisa? Lucruri de felul asta. Chiar si cu un algoritm f. bun de compresie (si practic imposibil de implementat pe PIC) e putin probabil sa poti comprima prea tare 450 bytes de date complet aleatoare ... cantitatea de informatie e mult prea mica. Link spre comentariu
Vizitator cosmin800 Postat Septembrie 5, 2005 Partajează Postat Septembrie 5, 2005 aleatoare aleatoare ... Link spre comentariu
sofian Postat Septembrie 8, 2005 Partajează Postat Septembrie 8, 2005 nu te mai chinui ca nu poti comprima pe pic 450bytes nr aleatoaredaca sunt la un moment dat cel putin 100 la fel obtii o comprimare de maxim 20% si nu merita Link spre comentariu
CristianC Postat Septembrie 9, 2005 Partajează Postat Septembrie 9, 2005 In loc de PIC18+memorie ai putea sa folosesti un dsPIC care e pe 16biti, are suport matematic, mai multa memorie, viteza de pana la 120Mhz (30MIPS) Link spre comentariu
Vizitator cosmin800 Postat Septembrie 9, 2005 Partajează Postat Septembrie 9, 2005 e nici chiar ... Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum