Matlab auttaa DSP-ohjelmat

B

BAT_MAN

Guest
Voisiko joku selittää minulle logiikka toimintoa tiedoston, vaikka kommentteja on esitetty, mutta en voinut ymmärtää

toiminto tekijät = factorize (polyn)
format long tekijät = [];
% Käyttää kynnys 1e-8 sijaan 0 tilille
% Tarkkuudella vaikutukset
Piestä = 1e-8;
%
proots = juuret (polyn),% saada nollilla ja polynomin
len = length (proots),% saat määrä nollia
%
while (len> 1)
if (abs (imag (proots (1))) <piestä)%, jos nolla on todellinen nolla
FAC = [1-real (proots (1))];
% Rakentaa tekijä proots (1) nolla
Tekijät = [tekijät; [FAC 0]];
else%, jos nolla on imaginaariosa saat kaikki nollia, joiden
% Imag osa-ve on kuvitteellista osa proots (1)
negimag = imag (proots) imag (proots (1));
% Saada kaikki nollia, jotka ovat samalla todella osittain proot (1)
samereal = real (proots)-real (proots (1));
% löytää Kompleksikonjugaatti nolla
indeksi = find (abs (negimag) <selkään & abs (samereal) <piestä);
jos (index)%, jos Kompleksikonjugaatti olemassa
FAC = [1 -2 * real (proots (1)) abs (proots (1)) ^ 2];
% muodossa 2nd jotta tekijä
Tekijät = [tekijät; FAC];
else%, jos Kompleksikonjugaatti ei ole
FAC = [1-proots (1)];
Tekijät = [tekijät; [FAC 0]];
loppu
loppu
polyn = deconv (polyn, FAC);
% deconvolve 1st/2nd järjestyksessä kertoimella polyn
proots = juuret (polyn),% määritellä uuden nollilla
len = length (polyn),% määrittää määrä nollia
loppu

 
Mielestäni liitetiedoston puuttui.Tässä se on. Rar-muodossa

 
Hei, se ei ollut kovin vaikea analysoida, miten se toimii, kun olet yhdenmukainen koodin oikein ja sitten debug se vaihe vaiheelta ja 1 erityisen polynomi.

Näin se toimii:

1) ensimmäinen löydämme juuret polynomin

2) On taas silmukka, joka kulkee jokaisen root.

3) Jos taustalla on todellinen sitten tietenkin tekijä on [1-root], koska taustalla (xa) on a.

4) Jos taustalla on kuvitteellinen jälkeen ohjelma yrittää löytää toinen root on konjugaattia.Jos löytyy niin se yhdistää nämä kaksi muodostavat 2. asteen polynomi.
Tämä tehdään käyttämällä seuraavaa logiikkaa:

(x-(a ib)) (x-(-ib)) = x ^ 2 - 2AX (a ib) (-ib) = x ^ 2 - 2AX | IB | ^ 2

5) Jos se ei löydä Kompleksikonjugaatti juuri, se taas ilmoittaa tekijä, kuten [1 (a ib)], joka on syynä (x - (a ib)).

6) jokaisen iteraation, se käyttää deconv (), joka löytää jäljellä polynomin kun polynomi jaetaan kertoimella.

Toivottavasti tämä auttaa ymmärtämään.

Olen myös kiinnittää. M-tiedosto, joka on kohdistettu oikein.

 

Welcome to EDABoard.com

Sponsor

Back
Top