cirip Postat Septembrie 30, 2011 Partajează Postat Septembrie 30, 2011 In "Sin+zgomot" cu ce ai generat sin1 si sin2 si zgomotul si cum ai preluat ( generat ) acele valori ( esantioane ) ?Formulele se afla in fiecare casuta. Care este formula pentru cplx FFT ?Calculul FFT este destul de complicat. Foloseste functia oferita de excel. cplx FFT vrea sa spuna ca acolo FFTul este numar complex. Trebuie extrasa amplitudinea ca sa arate frumos pe grafic. Daca chiar vrei detaliile, uita-te pe wikipedia la "Fast Fourier Transform", dar cred ca o sa te cam sperii Din fericire dsPICul ale librarie cu functii, printre care si FFT. Valorile f[Hz] dupa ce formula le-ai calculat ?Formula este in casuta. Pe vorbe, f_i = i*F_samp/N_FFT, unde i= 0 ... (N_FFT-1), unde f_i=frecventa a i-a, F_samp = frecventa de esantionare, iar N_FFT = numarul de puncte in care calculezi transf Fourier. N_FFT da rezolutia in frecventa, cu pretul efortului de calcul. si f[Hz] din care imagine: din sin+zgomot sau magFFT ? Din mag FFT. Nu poate fi din sin+zg, ptr ca astea sunt functii de timp. Discutam de fct. de frecventa. Ce este mag FFT ?Este amplitudinea transf Fourier. Daca faceam graficul in forma complexa, nu se intelegea mare lucru, asa ca a trebuit sa ii calculez amplitudinea. Esantioanele per global ( sin1 + sin 2 +zgomot ) daca ar fi un caz real cu dsPIC pot fi defapt esantioanele preluate prin convertorul ADC de 12 biti ?Bineinteles! Exact asta ar fi. Eu am mimat ca un ADC virtual mi-a lasat esanioanele alea intr-un buffer de memorie. Priveste fiecare casuta excel ca pe o locatie de memorie care contine un esantion cules de ADC. Cine e a1 si a2 ?Doi coeficienti luati de mine la intamplare, cu care sa inmultesc sinusurile si sa le fac suficient de mici ca sa fie ingropate in zgomot. Sunt un fel de potentiometre de volum. Mareste-le valorile, unul cate unul, si o sa poti vedea sinusul cu ochiul liber. Vad ca ai esantionat cu frecventa de 500 Hz >>> 2 * 90 Hz. Da. Puteam folosi orice frecventa >180Hz, ca sa-l fac pe taica Nyquist fericit. Daca supraesantionezi apare mai "curat" pe grafic ptr ochi. Link spre comentariu
mircang9 Postat Septembrie 30, 2011 Partajează Postat Septembrie 30, 2011 Salut Cirip, As mai avea doua mici intrebari, si trec apoi la analizarea litera cu litera a ceea ce ai scris aici in acest subiect. Cum ai obtinut ( generat ) graficele acelea in Excel, cu ce functie din care meniu ? Adica presupun ca ai format formula fx=.... si ai mers undeva intr-un meniu si i-ai dat ceva cu grafic. Si poate imi dai si un link cu un tutorial pentru Excel. Cred ca in prima faza incep cu Excel, ca doar calculele si ce ai descris sunt facute in Excel. Dupa aceea o sa trec la Matlab. Si Excel il am gata instalat si anume Excel din Office 2003 si Analysis ToolPack. Aseara m-am uitat pe acel indrumar de laborator de la Universitatea Transilvania ce l-am dat aici ca link si pare ca le explica pe rand binisor. Cum se interpreteaza "$" de exemplu in fx=SUMPRODUCT(C82:C208, $D$11:$D$137) pentru iesire filtru din "filtrat" si "!" in ... si cum adaug o formula din astea mai complexe ? Nu am FFT nicaeri la formule in Excel si nici cplx FFT in Excelu asta. Scuze, cred ca am gasit ceva pentru Fourier la: Tools->Data Analysis ->Fourier Analysis. Formule pentru SIN, COS ... sunt. Poate imi dai si un link cu un Excel mai recent. Si te rog sa ma scuzi ca pun atatea intrebari poate chiar simple dar vreau sa am un punct de plecare si sa stiu mai bine cum si cu ce incep, si apoi voi afisa mai mult rezultate decat intrebari. Multumesc mult Cirip. Cu deosebita stima, Dan *** Link spre comentariu
cirip Postat Septembrie 30, 2011 Partajează Postat Septembrie 30, 2011 Cum ai obtinut ( generat ) graficele acelea in Excel, cu ce functie din care meniu ?Selectezi casutele, apoi meniul insert -> scatter sau alte forme de grafice Si poate imi dai si un link cu un tutorial pentru Excel.Nu te pot ajuta cu asa ceva. Foloseste helpul si netul. Cred ca in prima faza incep cu Excel Mi se pare rational ptr inceput, desi Matlabul e mult mai versatil. Dar pentru inceput e foarte bun excelul. Cum se interpreteaza "$" Cand copiezi casute, ce e marcat cu $ ramane fix ca referinta, in timp ce restul se schimba in fct de noua casuta destinatie. Experimenteaza putin. E mai mult de explicat decat daca experimentezi. Si foloseste helpul si netul. si cum adaug o formula din astea mai complexe ?Daca incepi cu "=" sau cu semn de operatie aritmetica atunci cand scrii in casuta, excel stie ca editezi o formula. Uita-te cu atentie la continutul celulelor scrise de mine. Formulele incep toate cu "=". Nu am FFT nicaeri la formule in Excel si nici cplx FFT in Excelu astaNici nu exista ca formule. Alea le-am scris eu. Puteam sa scriu acolo oac, bau, cucu, dovleac_copt_cplx. cplx FFT e un nume sugestiv ptr mine, ca sa stiu ce am pus acolo. Putea fi orice altceva. Daca vrei, e echivalentul comentariilor din programare. Tools->Data Analysis ->Fourier AnalysisExact, de acolo. Citeste pe net cum se foloseste. O sursa frecventa de erori este daca numarul de esantioane nu este putere a lui 2. TREBUIE sa fie putere a lui 2, altfel algoritmul FFT nu merge. Si mai e ceva ... E bine sa citesti un pic despre FFT ca operator si proprietatile sale. Altfel, poti sa aplici FFT, dar hartia suporta orice si trebuie sa iti dai seama daca ce vezi are sens sau nu. Poate imi dai si un link cu un Excel mai recent.N-am. Eu folosesc Office-ul cu care a venit compul. Spor! Link spre comentariu
Vizitator Postat Septembrie 30, 2011 Partajează Postat Septembrie 30, 2011 Iti pot da o mana de ajutor in limita timpului disponibil. Mi-ar fi de mare folos, multumesc! Cunostintele mele de acum sunt cam la nivelul clasei a 12-a, cel mult anul 1 sau 2 de Electronica si Telecomunicatii (IPB), dar cam prafuite si alea. Iar la SCS (Semnale Circuite si Sisteme) am avut restanta pe toamna... Cu alte cuvinte, ca sa ma aduci pe drumul cel bun va trebui sa ai ceva rabdare cu mine. Sa zicem ca vrei sa faci un oscilator. Ptr asta, functia ta de transfer trebuie sa aiba o pereche de poli complex conjugati situati exact pe axa imaginara a planului s (Laplace). cirip, imi poti spune, te rog, ce trebuie sa invat ca sa inteleg termenii subliniati si sa mi se para normal rationamentul de mai sus? Eu stiu babeste. Ca sa fac un oscilator am nevoie de un amplificator si de o bucla de reactie pozitiva, adica iau semnalul de la iesire si il aduc la intrare (in faza). Mai departe ramane de discutat cand oscileaza si cand nu, pe ce frecventa si multe altele. Nu cer sa-mi explici ce n-am invatat la scoala, as vrea doar niste trimiteri catre un material didactic cat mai bun, asa cum a fost recomandarea pentru carti despre DSP. Recunosc, nu am cautat singur termenii subliniati pentru ca acum citesc pe nerasuflate cartea lui Lyons. Te rog sa nu crezi ca astept sa google-asca altul pentru mine. Intreb pentru ca Internetul e plin de materiale indoielnice (in toate domeniile) iar in cazul de fata nu sunt in stare sa le disting singur pe cele bune. mircang9, daca ai nevoie de un spreadsheet care sa stie Fourier si inversa ei incearca Gnumeric. Exista si versiunea pentru Windows. Arata exact ca Microsoft Excel-ul dar este gratuit, open source si mult mai bogat in functii. Link spre comentariu
cirip Postat Septembrie 30, 2011 Partajează Postat Septembrie 30, 2011 Salut, O sa incep cu cateva referinte. Subiectul este vast si o sa il dezbatem incet-incet, in masura timpului meu si al interesului pentru subiect. functia ta de transfer - http://en.wikipedia.org/wiki/Transfer_function In partea de jos a paginii sunt exemple la sectiunea "Common transfer function families" pereche de poli complex conjugati - Polii sunt radacinile polinomului de la numitor. Cand ala se face zero, toata expresia iese prin tavan. Pol nu are sensul de pol magnetic sau 20 de marafeti. Confuzia asta m-a urmarit si pe mine ani de zile. Vine din engl "pole", adica un bat lung cu care impingi in sus varful unui cort, de exemplu. Imagineaza-ti o folie de cauciuc pe care o impingi in sus cu un bat (pole). Forma aia este cea a graficului transformatei Laplace a functiei de transfer analizate. planului s (Laplace). - s este o variabila complexa de forma s = sigma + j*omega si este argumentul transformatei Laplace. http://en.wikipedia.org/wiki/Laplace_transform Transformata Fouriei nu este altceva decat evaluarea transf laplace pentru s=j*omega. In termeni populari se mai cheama caracteristica amplitudine-frecventa a unui filtru. Link spre comentariu
Vizitator Postat Octombrie 1, 2011 Partajează Postat Octombrie 1, 2011 Nu cred ca cineva mai poate uita ce e ala un pol dupa ce citeste explicatia de mai sus. Parca vad batul ala impungand! Am vrut sa fac un mic exercitiu si deja mi-am prins urechile. Am zis asa: 0. iau un spreadsheet care stie Fourier 1. generez o forma de unda compusa din 2 semnale sinusoidale de frecvente diferite 2. fac un grafic cu forma de unda si ma minunez ce stramba e 3. aplic transformata Fourier 4. mai trag un grafic cu spectrul rezultat (modulul numerelor complexe) si ma astept sa vad 2 bete corespunzatoare celor 2 sinusoide initiale 5. aplic inversa transformatei Fourier 6. trag iar un grafic si ma astept sa vad aceeasi forma de unda ca la punctul 2. Simplu, nu? Rezultatul a fost ca dupa 1 zi intreaga nu mi-a iesit nimic. Intai am cautat ce soft sa folosesc. Pe net lumea zicea ca singurul spreadsheet moca si sa mai si stie transformata Fourier directa si inversa e Gnumeric. L-am instalat si am bajbait ceva pana sa gasesc functia Fourier. Implicit nu apare, trebuie mers in meniul Tools->Plugins si bifat acolo tot. Nu inteleg de ce restul erau deja bifate, mai putin ala de-mi trebuia mie... Functia e descrisa cam asa: Fourier(coloana date de intrare, flag directa/inversa, flag rezultat pe 1 sau 2 coloane) -rezultat pe 2 coloane inseamna separat partea reala si cea imaginara -rezultat pe 1 coloana inseamna 1 singura coloana cu nimere complexe, Gnumeric stie si numere complexe intr-o singura celula Atentie, daca numarul de esantioane nu e putere a lui 2 functia completeaza singura cu 0 pana la prima putere a lui 2. Am luat si teapa asta. Pe urma alta bajbaiala, cum se foloseste. Este un array formula, se introduce cu CTRL+SHIFT+ENTER, ca la Excel. Trebuie selectata toata zona rezultatului intors, pe urma se scrie formula si se apasa CTRL+SHIFT+ENTER. Ciudatenia e ca in Gnumeric atat functia Fourier() cat si inversa ei au ca parametru de intrare o singura coloana. Mai tarziu am constatat ca acea coloana trebuie sa contina numere reale, nu poate fi cu numere complexe. Nu inteleg cum aplic transformata inversa, care are ca intrare numere complexe, adica 2 coloane din moment ce Fourier() admite doar una. Pe scurt nu am reusit sa ajung la punctul 6. Uitandu-ma mai atent in help-ul de la Gnumeric, formulele folosite pentru implementarea Fourier() seamana cu cele de la DFT dar nu inteleg de ce nu apare i sau j in definitia functiilor? http://projects.gnome.org/gnumeric/doc/ ... tool.shtml Cum le folosesc? Ce nu fac bine? Exemple nu am gasit. Acum deja ma gandesc sa-mi implementez singur functia, poate asa pricep si eu ce fac. Nu cred ca e de vina soft-ul folosit, mai degraba eroarea este de tip PBKC. P.S. PBKC = Problem Between Keyboard and Chair Link spre comentariu
cirip Postat Octombrie 1, 2011 Partajează Postat Octombrie 1, 2011 salut, M-ai amuzat cu comentariile ... Excel stie invers FFT. Am aflat acum 4 milisecunde. http://www.brainmapping.org/NITP/PNA/te ... rExcel.htm Era de ras sa nu faca si iFFT. De celalalt soft nu stiu nimic, asa ca nu comentez. Sugestia mea e sa nu incerci (inca) sa codezi un FFT "de mana". Un singur indice gresit si s-a dus totul pe copca. Ia-o usurel. Exercitiul pe care ti l-ai propus e deja destul de ancombrant, ca dovada orele minunate petrecute in compania lui. Spor! Cirip EDIT: "Atentie, daca numarul de esantioane nu e putere a lui 2 functia completeaza singura cu 0 pana la prima putere a lui 2. Am luat si teapa asta." Procedeul se numeste "zero padding" si nu afecteaza spectrul calculat. Deci nu ai luat nicio teapa. Excelul nu face singur paddingul, deci tre sa-i dai exact o putere a lui doi, dar nu ma deranjeaza. "nu inteleg de ce nu apare i sau j in definitia functiilor?" j este inclus in variabila complexa s din exponentul lui e. Ptr transf Four, s=j*omega, deci iacata j-ul. Link spre comentariu
Vizitator Postat Octombrie 2, 2011 Partajează Postat Octombrie 2, 2011 Dupa ce m-am plans in postul anterior am incercat si in Excel si a iesit din prima, in 10 minute. Tocmai vroiam sa scriu ca stie si transformata inversa dar am gasit raspunsul tau. Ce nu-mi place la Excel este ca rezultatul este pus sub forma de text, nu este pus ca formula (cum e posibil in Gnumeric). Asta inseamna ca daca schimb datele de intrare graficele nu se vor actualiza, nici macar cu F9 (Recalculate) nu merge. Dupa ce schimb semnalul de la intrare trebuie sa chem iar wizard-ul pentru analiza Fourier. Enervant. In timp ce cautam o metoda de a scrie formula in loc de a folosi wizard-ul, am dat peste altceva.Cea mai simpla si intuitiva metoda pentru obtinerea si intelegerea transformatei Fourier (cel putin pentru mine), pana acum alta reprezentare mai clara n-am vazut, are doar 6 slide-uri:http://excelunusual.com/wp-content/uplo ... rial_1.pdfMetoda de mai sus descrie totodata si implementare unui filtru trece banda pentru o singura frecventa. Sugestia mea e sa nu incerci (inca) sa codezi un FFT "de mana". Nu la FFT (Fast Fourier Transform) ma gandeam, vroiam sa implementez DFT (Discrete Fourier Transform) directa si inversa folosind un algoritm cat mai simplu, neoptimizat, care sa foloseasca functiile sin, cos si sume. Imi trebuia doar ca sa-mi astampar curiozitatea experimentand cum se modifica graficele in diferite conditii. Intre timp lucrurile au inceput sa se mai aseze, nu mai am asa mare nevoie de functiile alea.Procedeul se numeste "zero padding" si nu afecteaza spectrul calculat. Multumesc ca mi-ai zis de asta. Investigand procedeul ZP (Zero Padding) am ajuns, fara sa vreau, sa citesc multe altele despre reprezentare in timp sau in frecventa a semnalelor. Lucrurile devin din ce in ce mai clare.Revenind, niste explicatii si exemple care mi-au placut, despre ZP, am gasit aici:http://blinkdagger.com/matlab/matlab-ff ... o-padding/Inca nu reusesc sa intuiesc de ce ZP nu afecteaza spectrul. Dupa parerea mea ar trebui sa-l afecteze.Incerc sa demostrez printr-un contraexemplu:1. Esantionam (in timp) un semnal continuu, constant si diferit de 0. Toate esantioanele (sa zicem 32) vor avea aceeasi valoare. Facem DFT pentru pentru cele 32 de esantioane si obtinem reprezentarea in domeniul frecventa. Spectrul ar trebui sa contina o singura bara la 0 Hz. Corect?2. Acum luam aceleasi 32 de esantioane de la punctul 1., facem ZP pana la 64 de esantioane si aplicam DFT pentru 64 de puncte. Teoretic spectrul ar trebui sa ramana neschimbat. Totusi, daca ma uit la forma de unda pentru cele 64 de esantioane e clar ca am o treapta. Din ce stiu eu semnalul treapta are spectru infinit de armonici impare. Unde gresesc? Link spre comentariu
Vizitator Postat Octombrie 4, 2011 Partajează Postat Octombrie 4, 2011 Ca sa experimentez cu FT (Fourier Transform) aveam nevoie in Excel de grafice cu FT care sa se actualizeze imediat ce fac o modificare la forma semnalului de intrare. Excel nu poate asta asa ca am implementat in VBA (Visual Basic for Applications) 2 formule noi: RoDFT(range pe o coloana) si inversa ei, RoDFTinv(range pe 2 coloane). Formulele pot fi apelate din foaia de calcul la fel ca orice alta formula de tip array. Prima face descompunerea spectrala a semnalului si cealalta reconstruieste un semnal pornind de la informatia spectrala. DFT fine de la Discrete Fourier Transform inv vine de la inversa si Ro i-am pus in fata ca sa nu se confunde cu vreun alt DFT. Cine are chef sa se joace cu descompunerea spectrala a unei forme de unda si recompunerea ei (eventual dupa ce aplica niste filtre) sa incerce demo-ul de mai jos. Daca vreti sa vedeti sau sa modificati implementarea functiilor in VBA dati in Excel ALT+F11. Functiile nu sunt optimizate, sunt doar cu scop didactic. Link spre comentariu
Vizitator Postat Octombrie 4, 2011 Partajează Postat Octombrie 4, 2011 Am uitat sa spun ceva important. Ca sa functioneze fisierul de mai sus trebuie activate macro-urile. Adica la deschiderea fisierului, daca intreaba ceva Excel-ul trebuie sa ii dati 'Enable Macros'. Daca nu intreaba nimic inseamna ca nivelul de securitate e prea mare si nu va lasa sa rulati demo-ul. Se poate modifica de la Tools->Options->Security->Macro Security...->Security Level si se bifeaza 'Medium'. Apoi se da OK de 2 ori si se deschide fisierul demo. Acum, la deschidere ar trebui sa va intrebe si ii dati 'Enable Macros' de fiecare data cand il deschideti. Formulele nou introduse pot fi folosite in orice celula din acest fisier, in foile existente sau nou creeate, ca orice alta formula obisnuita. Pentru cei care, de frica virusilor, nu au incredere in fisiere luate de pe net, pun codul sursa. Pentru a-l baga intr-un fisier nou, se creeaza un nou fisier Excel, se da ALT+F11, se creeaza un nou modul cu Insert->Module si in el se face 'Paste' la codul de mai jos si se salveaza. Se inchide editorul VBA si gata, noul fisier stie de acum inca 2 formule, RoDFT() si RoDFTinv(). Instructiunile de utilizare, mai putin setarea nivelului de securitate pe care tocmai am povestit-o mai sus, sunt scrise si in foaia 'Help' din fisierul demo. Option ExplicitFunction RoDFT(RoData As Range) As Variant Dim CallerRows As Long Dim CallerCols As Long Dim hOmega As Double Dim Result() As Double Dim N As Long 'time sample index number Dim F As Long 'calculated frequency index number Dim RowNdx As Long Dim ColNdx As Long With Application.Caller CallerRows = .Rows.Count 'nr. de esantioane ce vor fi calculate CallerCols = .Columns.Count 'coloana 1 real, coloana 2 imaginar End With RowNdx = RoData.Rows.Count 'nr. esantioanelor de intrare folosite in calcul ColNdx = RoData.Columns.Count '1 = partea reala, 2 = partea imaginara 'validari 'if ColNdx <> 1 atunci exit cu eroare 'if CallerRows <> 2 atunci exit cu eroare 'if RowNdx < 2 atunci exit cu eroare 'calculate Result ReDim Result(1 To CallerRows, 1 To 2) For F = 1 To CallerRows 'CONST PI = 3.141592653589793, or PI = 4 * Atn(1) 'or call spreadsheet function "=pi()" from VBA 'PI = Application.WorksheetFunction.pi(), same as PI=[pi()] ' 'hOmega = SampleInterval * 2 * [pi()] * ((F - 1) / SampleInterval / CallerRows) hOmega = 2 * [pi()] * (F - 1) / CallerRows'--------------- begin calculating function 'real Result(F, 1) = RoData(1, 1) For N = 2 To RowNdx Result(F, 1) = Result(F, 1) + RoData(N, 1) * Cos((N - 1) * hOmega) Next N Result(F, 1) = 2 * Result(F, 1) / RowNdx 'imaginar Result(F, 2) = 0 For N = 2 To RowNdx Result(F, 2) = Result(F, 2) + RoData(N, 1) * Sin((N - 1) * hOmega) Next N Result(F, 2) = -2 * Result(F, 2) / RowNdx'--------------- end calculating function Next F RoDFT = ResultEnd FunctionFunction RoDFTinv(RoData As Range) As Variant Dim CallerRows As Long Dim CallerCols As Long Dim lOmega As Double Dim Result() As Double Dim N As Long 'frequency sample index number Dim T As Long 'calculated time index number Dim RowNdx As Long Dim ColNdx As Long With Application.Caller CallerRows = .Rows.Count 'nr. de esantioane ce vor fi calculate CallerCols = .Columns.Count 'coloana 1 real, coloana 2 imaginar End With RowNdx = RoData.Rows.Count 'nr. esantioanelor de intrare folosite in calcul ColNdx = RoData.Columns.Count '1 = partea reala, 2 = partea imaginara 'validari 'if ColNdx <> 2 atunci exit cu eroare 'if CallerRows <> 2 atunci exit cu eroare 'if RowNdx < 2 atunci exit cu eroare 'calculate Result ReDim Result(1 To CallerRows, 1 To 2) For T = 1 To CallerRows 'CONST PI = 3.141592653589793, or PI = 4 * Atn(1) 'or call spreadsheet function "=pi()" from VBA 'PI = Application.WorksheetFunction.pi(), same as PI=[pi()] ' 'lOmega = DeltaF * 2 * [pi()] * ((T - 1) / DeltaF / CallerRows) lOmega = 2 * [pi()] * (T - 1) / CallerRows'--------------- begin calculating function 'real Result(T, 1) = 1 * RoData(1, 1) For N = 2 To RowNdx Result(T, 1) = Result(T, 1) _ + RoData(N, 1) * Cos((N - 1) * lOmega) _ - RoData(N, 2) * Sin((N - 1) * lOmega) Next N Result(T, 1) = Result(T, 1) / 2 'imaginar Result(T, 2) = 1 * RoData(1, 2) For N = 2 To RowNdx Result(T, 2) = Result(T, 2) _ + RoData(N, 1) * Sin((N - 1) * lOmega) _ + RoData(N, 2) * Cos((N - 1) * lOmega) Next N Result(T, 2) = Result(T, 2) / 2'--------------- end calculating function Next T RoDFTinv = ResultEnd Function Link spre comentariu
mircang9 Postat Octombrie 5, 2011 Partajează Postat Octombrie 5, 2011 Am gasit si eu o carte si se numeste: Understanding Digital Signal Processing Lyons.pdf dar poza pentru second edition pe coperta nu apare la fel. Este din 2001. Are 19 MB. Ai vre-un link ceva de unde pot descarca versiunea mai noua sau second edition ? M-am bagat putin si in Matlab 7 si cu FDA tools am calculat coeficientii filtrului meu FTB si nu stiu ce sa fac mai departe cu ei. Am calculat acesti coeficienti pentru filtru FIR cu raspuns finit si mi-a scos cam 514 coeficienti cu +/-. Am inteles ca filtru IIR contine calcule mai putine dar ca nu este asa stabil ca FIR. Totusi cum fac ca acest FIR sa aiba raspuns infinit adica sa prelucreze spectrul de la intrare la"infinit". Adica trebuie sa implementez o bucla in dsPIC ? Sau sa fac convolutie intre coeficienti si esantioanele de la intrare in FIR si in acelasi timp convolutie cu aceeasi coeficienti dar si cu iesirile anterioare din filtru ? Inteleg ca daca nu este o formula in Excel o implementez in Visual Basic care vad ca functioneaza integrat cu Excel. Am Excel 2003. Vreau un link pentru tutorial pentru acest VBA si pentru Excel daca sti, te rog mult. Mai am de studiatceea ce a postat Cirip si ce ai postat si tu George. Dupa ce voi studia cele de mai sus vreau sa fac un filtru FTB trece bandade ordin superior implementat in dsPICu ce-mi va sosi ( dsPIC starter kit ).Caracteristicile filtrului sunt: Fstop1 ( 2410 Hz ), Fpass1 ( 2430 Hz ),Fpass2 ( 2490 Hz ), Fstop2 ( 2510 Hz ). Frecventa de esantionare Fs=5200 Hz. Aceste caracteristici filtru FIR le-am dat la Matlab 7 FDA tools si mi-a scos acei 514 coeficienti de care am amintit mai sus. Link spre comentariu
Vizitator Postat Octombrie 5, 2011 Partajează Postat Octombrie 5, 2011 Understanding Digital Signal Processing scrisa de Richard G. Lyons, aia este cartea. Nu conteaza poza de pe coperta. Cartea a fost editata pana acum de 3 ori, fiecare editie are alta coperta dar continutul e practic acelasi. Orice editie ai, e foarte buna. Te rog nu mai cere in mod public materiale cu copyright (programe, carti, filme sau altceva care incalca legea dreptului de autor). Nu iti va da nimeni pentru ca e ilegal. Scrie si in regulamentul elforum ca nu e voie (la punctul 3.10): http://elforum.info/viewtopic.php?f=94&t=2390 La proiectarea de filtre inca nu am ajuns. Nu stiu sa te ajut. Tocmai vreau si eu sa implementez niste filtre dar mai "babeste". Adica: -orice forma de unda a semnalului de intrare este de fapt formata dintr-o multime de oscilatii sinusoidale constante in timp. Asta este un fel de traducerea in cuvinte pentru transformata Fourier. Si invers, inversa transformatei Fourier. Adica, daca am o multime de generatoare de semnal sinusoidal constant, fiecare cu amplitudinea, frecventa si faza date de nenea Fourier si le adun, imi iese orice forma de unda doresc. Atentie, nu e nevoie sa umbli la reglaje in timp. Odata ce am stabilit reglajele, dau drumul la toate generatoare simultan, iar suma iesirilor este chiar semnalul meu. Orice forma ar avea el. -odata ce am inteles principiul de mai sus, descompun semnalul meu de intrare in componentele spectrale (adica iau semnalul esantioant in timp si aplic DTF) -din spectrul astfel obtinut al semnalului meu, elimin frecventele nedorite, adica aplic filtrul dorit -recompun semnalul (adica iau ce a mai ramas din spectru si aplic DTF inversa) si gata, am semnalul filtrat Inca nu am experimentat ce am scris mai sus dar, daca am inteles corect povestea cu transformata Fourier, atunci ar trebui sa functioneze. Filtrul rezultat in urma procedurii de mai sus este de tip FIR. Filtrele IIR sunt mult mai complicat de inteles, de proiectat si de stapanit. Ca sa aplici metoda de mai sus la un semnal lung in timp, faci asa: -iei un calup din semnalul de intrare si il transformi in esantioane numerice cu ajutorul unui ADC (Analog to Digital Convertor) -pentru esantioanele obtinute faci FFT, aplici filtrul, apoi faci inversa FFT -convertesti semnalul digital (numerele obtinute) in semnal analogic folosind un DAC (Digital to Analog Convertor) -iei urmatorul calup de semnal de intrare si repeti procedeul la nesfarsit Asta e doar ca sa intelegi principiul. Ca sa pui in practica lucrurile se complica, e nevoie de tot felul de smecherii. Ai inteles bine cu Excel-ul. Daca n-ai o functie o poti implementa. Excelul vine si cu un limbaj de programare, VBA, de care nu stie toata lumea pentru ca e nevoie de el foarte rar. Lasa VBA-ul, ala e alta poveste care vine si ea cu complicatiile ei, complicatii de care n-ai nevoie. VBA e un limbaj de programare de nivel inalt la fel ca C-ul, Pascal-ul sau oricare altul. Intamplator eu stiam VBA dinainte, de aia l-am folosit. Inteleg ca ai Matlab, e foarte bun, poate chiar mai potrivit decat Excel+VBA. De ce vrei tutorial VBA, nu a mers demo-ul pe care l-am dat mai inainte? Link spre comentariu
mircang9 Postat Octombrie 5, 2011 Partajează Postat Octombrie 5, 2011 Deocamdata am deschis doar fisierul cu Excel si cand am apasat ALT+F11 a aparut si ferestra cu Visual Basic cu codul sursa pe care l-ai si postat. In Excel apar si graficele acelea, si coloanele fara cifre cu #NAME? care nu stiu ce inseamna si care nu contin cifre. Link spre comentariu
Vizitator Postat Octombrie 5, 2011 Partajează Postat Octombrie 5, 2011 Daca apare #NAME? nu e bine. In cazul tau apare asa pentru ca ai in Excel nivelul de securitate setat pe 'High'.Am scris cu 2 mesaje mai sus cum se trece securitatea pe 'Medium'. Fa ce scrie in primul paragraf si o sa mearga cum trebuie: viewtopic.php?p=851278#p851278Dupa ce treci securitatea pe 'Medium' nu mai e nevoie sa dai ALT+F11.Vezi ca ti-am trimis si un mesaj privat, citeste-l te rog. Link spre comentariu
Vizitator Postat Octombrie 7, 2011 Partajează Postat Octombrie 7, 2011 Pana la urma m-am mutat cu cititul pe editia a 3-a a cartii Understanding Digital Signal Processing scrisa de Richard G. Lyons. Este in formatul epub. Ca reader folosesc Mozilla Firefox + add-on extension-ul 'EPUB Reader'. Alt reader decent pentru formatul epub n-am reusit sa gasesc. Am incercat cateva, unele sunt chiar dragute pentru beletristica, dar toate sunt jalnice pentru citit carti tehnice. Vreau unul care sa simuleze o carte reala. Ma deranjeaza foarte tare ca la absolut toate reader-ele epub paginatia nu ramane constanta. Sunt obisnuit cu cartile tiparite pe hartie. Pozitia fixa in pagina pentru texte, desene si formule ajuta foarte mult. Acum, cu toate astea mobile, daca latesti putin fereastra deja ai alta carte! Vreau paginatie fixa cu scroll continuu si facilitati de navigare si adnotare (link, bookmark, buton pentru back, evidentiator, adnotari, etc., cam ca la Acrobat Reader dar pentru formatul epub). Daca stie cineva un reader epub cu asa ceva, spuneti-mi si mie va rog. 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