Matlab hjelp DSP-programmer

B

BAT_MAN

Guest
Kan noen forklare meg logikken for funksjonen filen selv kommentar er gitt, men jeg var ikke i stand til å forstå

funksjon Factors = faktorisera (polyn)
format long; Faktorer = [];
% Bruk terskel 1e-8 i stedet for 0 til konto for
% Presisjon effekter
Treske = 1e-8;
%
proots = røtter (polyn);% få nuller av polynom
len = lengde (proots);% få antall nuller
%
while (len> 1)
if (abs (forestille (proots (1))) <treske)% hvis null er en reell null
fac = [1-real (proots (1))];
% Konstruere faktor med proots (1) som null
Faktorer = [Factors; [fac 0]];
else% hvis zero har imaginære delen får alle nuller hvis
% Forestille del er-ve av imaginære delen av proots (1)
negimag = forestille (proots) forestille (proots (1));
% Får alle nuller som har samme reell rolle som proot (1)
samereal = real (proots)-real (proots (1));
% finner det komplekse konjugerte null
index = find (abs (negimag) <treske og abs (samereal) <treske);
if (index)% hvis de komplekse konjugerte eksisterer
fac = [1 -2 * real (proots (1)) ABS (proots (1)) ^ 2];
% form 2dre orden faktoren
Faktorer = [Factors; fac];
else% hvis kompleks konjugert finnes ikke
fac = [1-proots (1)];
Faktorer = [Factors; [fac 0]];
slutt
slutt
polyn = deconv (polyn, fac);
% deconvolve den 1st/2nd rekkefølgen faktor fra polyn
proots = røtter (polyn);% fastsette nye nuller
len = lengde (polyn);% fastslå antall nuller
slutt

 
Jeg tror vedlegget manglet.Her er det i. RAR-format
Beklager, men du må logge inn for å vise dette vedlegget

 
hei, var det ikke veldig vanskelig å analysere hvordan det fungerer når du har justert koden riktig og feilsøke det trinn for trinn på 1 bestemt polynom.

Her er hvordan det fungerer:

1) første vi finner røttene til polynomet

2) Det er en stund løkke som løper for hver rot.

3) Hvis roten er reell så åpenbart faktoren er [1-root] siden roten (xa) er a.

4) Hvis roten er tenkt så programmet prøver å finne et annet rot som konjugat.Hvis de finner det så kombinerer disse to til å danne en 2dre grad polynom.
Dette gjøres ved hjelp av følgende logikk:

(x-(a ib)) (x-(a-ib)) = x ^ 2 - 2ax (a ib) (a-ib) x ^ 2 = - 2ax | a ib | ^ 2

5) Hvis den ikke finner de komplekse konjugert rot, så det igjen erklærer en faktor som [1 (a ib)] som er roten til (x - (a ib)).

6) I hver iterasjon, bruker den deconv () som finner resten av polynom når polynom er delt på faktor.

Håper dette hjelper på forståelsen.

Jeg er også feste. Meter fil som er riktig justert.

 

Welcome to EDABoard.com

Sponsor

Back
Top