mircang9 Postat Octombrie 27, 2011 Partajează Postat Octombrie 27, 2011 In MATLAB exista. Dar mi-ar fi mai usor in Excel. Adica din zecimal de forma -0.xxxxxxxxx in Q15 forma 0xXXXX ( hexa pe 16 biti ) pentru a baga intr-un DSP. Link spre comentariu
awy1917 Postat Octombrie 27, 2011 Partajează Postat Octombrie 27, 2011 Este functia DEC2HEX(Number, places), dar nu-mi dau seama daca este ce cautati sau nu. Aceasta functie merge doar pentru intregi.Puteti sa dati un exemplu ? Link spre comentariu
mircang9 Postat Octombrie 27, 2011 Autor Partajează Postat Octombrie 27, 2011 dec: -0.3387451171875000E-02 ---> q15: 0xFF91 ( hexa pe 16 biti ). dec: +0.3906250000000000E-02 ---> q15: 0x0080 ( hexa pe 16 biti ). In MATLAB face. Dar nu stiu in EXCEL. Se pare ca nu face chiar bine Excel: http://support.microsoft.com/kb/78113 Link spre comentariu
awy1917 Postat Octombrie 27, 2011 Partajează Postat Octombrie 27, 2011 M-am uitat pe net, dar din pacate am gasit doar conversii catre hex pe 32 de caractere. Am facut empiric, uitandu-ma la definitia lui Q15 de pe wiki (http://en.wikipedia.org/wiki/Q_(number_format)). Am iesit ceva, (destul de ciobanesc) , dar care verifica cele 2 exemple pe care le-ati dat. Ar trebui verificat pe un set de date mai mare ca sa fie sigur. In exemplu meu valoare in excel este stocata in celula B2. Formula de conversie este : ="0x"& DEC2HEX(IF(INT(B2*32768) <0;INT(B2*32768)+65536;INT(B2*32768));4) Conform a ce scrie pe wiki : - inmultesc valoarea decimala cu 2 la puterea 15 (Q15) - rotunjesc la intregul apropiat ( INT() ) - daca valoarea este negativa 65536 , (este 2 la puterea 16 l-am pus dupa nas :( ) - rezultatul intreg i-l convertesc la HEX pe 4 caractere - pun in fata "0x" ca sa fie frumos Sper sa va folosesca nu-i f stiintific facuta , mai trebuie verificata. Link spre comentariu
mircang9 Postat Octombrie 27, 2011 Autor Partajează Postat Octombrie 27, 2011 Am trimis intrebarea asta si la http://www.excelforum.com/. la thread-ul "Convert floating point number to hex representation" cu acelasi username: mircang9. Link spre comentariu
awy1917 Postat Octombrie 27, 2011 Partajează Postat Octombrie 27, 2011 Pe acelasi site : http://www.excelforum.com/excel-program ... ation.html postul #13 Sunt multe functii de conversie , am incercat functia Sng2Hex dar care intoarce un HEX pe 32 de biti, si la valorile pe care le-ati dat ca exemplu intorc : ?Sng2Hex(-0.3387451171875000E-02) -> BB5E0000 ?Sng2Hex(+0.3906250000000000E-02) -> 3B800000 Care nu prea pusca cu ce aveti nevoie. Am incercat mai multe functii din aceasta colectie dar nici una nu a dat rezultatele dorite. Link spre comentariu
cirip Postat Octombrie 28, 2011 Partajează Postat Octombrie 28, 2011 Este exact asa cum a spus awy1917 Inmulteste cu 32768 inainte de conversie si convertesti numai partea intreaga. Exemplu +0.3906250000000000E-02*32768=128 zecimal, care este 0x80. eu folosesc = ".word " & "0x" & RIGHT(DEC2HEX($O$7*L10,4),4) Ca sa definesc coeficientii filtrului, cu valoarea zecimala in casuta L10 si 32768 in casuta O7. Link spre comentariu
mircang9 Postat Octombrie 28, 2011 Autor Partajează Postat Octombrie 28, 2011 Meseriasi mai sunteti Era cumplit sa import din Matlab fiecare valoareca sa fac acel fisier ftb.s. Lucram si cu programul acela facut in Visual C++ 6.0si cu MATLAB si apoi importare in ftb.s fiecare valoare luata la mana. Acumlucrez doar cu "banalul" EXCEL si valorile calculate le import in ftb.s si aproape gata filtrul. Va multumesc foarte mult **** Link spre comentariu
Vizitator Postat Octombrie 28, 2011 Partajează Postat Octombrie 28, 2011 Daca te pricepi putin, sau ai dorinta sa inveti, poti folosi si VBA - Visual Basic for Aplication - care este integrat in suita Office. 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