B
BAT_MAN
Guest
Kan iemand mij uitleggen de logica voor de functie bestand hoewel commentaar gegeven, maar ik was niet in staat om te begrijpen
functie Factoren = ontbinden (pölyn)
formaat lang; Factoren = [];
Gebruik% drempel van de 1e-8 in plaats van 0 tot goed voor
% Precisie effecten
Dorsen = 1e-8;
%
proots = wortels (pölyn);% krijgen de nullen van de polynoom
len = lengte (proots);% krijgen van het aantal nullen
%
while (len> 1)
if (abs (imag (proots (1))) <dorsen)% indien de nul is een nul
fac = [1-real (proots (1))];
% Construeren met de factor proots (1) als nul
Factoren = [factoren; [fac 0]];
else% indien de nul heeft imaginaire deel krijgen alle nullen waarvan
% Imag deel is-ve van imaginaire deel van proots (1)
negimag = imag (proots) imag (proots (1));
% Krijgen alle nullen die hebben dezelfde reële deel als Proot (1)
samereal = real (proots)-real (proots (1));
% vindt het complex geconjugeerde nul
index = vinden (abs (negimag) <dorsen & ABS (samereal) <drempel);
if (index)% indien de complexe geconjugeerde bestaat
fac = [1 -2 * real (proots (1)) ABS (proots (1)) ^ 2];
% 2e orde form factor
Factoren = [factoren; fac];
else% indien de complexe geconjugeerde niet bestaat
fac = [1-proots (1)];
Factoren = [factoren; [fac 0]];
eindigen
eindigen
pölyn = deconv (pölyn, fac);
% deconvolve de 1e/2e orde factor uit pölyn
proots = wortels (pölyn);% bepalen van de nieuwe nullen
len = lengte (pölyn);% bepalend voor het aantal nullen
eindigen
functie Factoren = ontbinden (pölyn)
formaat lang; Factoren = [];
Gebruik% drempel van de 1e-8 in plaats van 0 tot goed voor
% Precisie effecten
Dorsen = 1e-8;
%
proots = wortels (pölyn);% krijgen de nullen van de polynoom
len = lengte (proots);% krijgen van het aantal nullen
%
while (len> 1)
if (abs (imag (proots (1))) <dorsen)% indien de nul is een nul
fac = [1-real (proots (1))];
% Construeren met de factor proots (1) als nul
Factoren = [factoren; [fac 0]];
else% indien de nul heeft imaginaire deel krijgen alle nullen waarvan
% Imag deel is-ve van imaginaire deel van proots (1)
negimag = imag (proots) imag (proots (1));
% Krijgen alle nullen die hebben dezelfde reële deel als Proot (1)
samereal = real (proots)-real (proots (1));
% vindt het complex geconjugeerde nul
index = vinden (abs (negimag) <dorsen & ABS (samereal) <drempel);
if (index)% indien de complexe geconjugeerde bestaat
fac = [1 -2 * real (proots (1)) ABS (proots (1)) ^ 2];
% 2e orde form factor
Factoren = [factoren; fac];
else% indien de complexe geconjugeerde niet bestaat
fac = [1-proots (1)];
Factoren = [factoren; [fac 0]];
eindigen
eindigen
pölyn = deconv (pölyn, fac);
% deconvolve de 1e/2e orde factor uit pölyn
proots = wortels (pölyn);% bepalen van de nieuwe nullen
len = lengte (pölyn);% bepalend voor het aantal nullen
eindigen