Documente Academic
Documente Profesional
Documente Cultură
Grupa 444C
Datele initiale:
I.
a) Au fost specificati toti parametrii necesari in enunt.
c) Se observa existenta polilor complecsi si a reziduurilor. Vom folosi functia residuez din
Matlab. Coeficientii complecsi sunt urmatorii:
Observam coeficientii astfel obtinuti nu sunt reali, atunci ii vom grupa pe cei complex
conjugati si vom face o structura cu celule de ordin 2.
[b1,a1]=residuez (r(1:2),p(1:2),[]);
[b2,a2]=residuez (r(3:4),p(3:4),[]);
b1 = { -0.0409, -0.0991}
b2 = { -0.0570, 0.1427}
a1 = { 1.6171, 0.6822}
a2 = { -1.5212, 0.6193}
d)Pentru a nu exista depasiri de reprezentare am scalat semnalul x care a fost filtrat atat
in Matlab, cat si in CodeWarrior cu un factor de scala s.
s1 = sum(abs(impz(1,a1)));
s2 = sum(abs(impz(1,a2)));
s = max(s1,s2);
x = x/s;
e)
Structura obtinuta se poate vizualiza in figura 3. Deoarece am scalat coeficientii a
cu 2 pentru a nu exista depasiri in nodurile structurii, apoi am inmultit cu 2 pentru a corecta acest
lucru.
%FOB Chebashev II
n = 4; %ordinul filtrului
we = 2*pi*Ft1/Fs;
wb = 2*pi*Ft2/Fs;
Oe = 2*Fs*tan(we/2);
Ob = 2*Fs*tan(wb/2);
Wt = [Oe Ob];
Rs = 40; %riplul in banda de oprire
%forma paralel
[r,p,k] = residuez (bd,ad); % descompunerea functia de transfer
in fractii simple
#include <prototype.h>
#include <stdio.h>
#define DataBlockSize 160 /* dimensiunea unui bloc de date */
#define BlockLength 75 /* numarul de blocuri de date */
Word32 sum;
int main()
{
short n, i, p;
fpx = fopen("../x.dat","r+b");
if (!fpx)
printf("\nNu s-a deschis x");
fpy=fopen("../y.dat","w+b");
if (!fpy)
printf("\nNu s-a deschis y");
for (i = 0; i<BlockLength; i++)
{
fread(x, sizeof(Word16), DataBlockSize, fpx);
y[n] = 0;
for (p = 0; p<2; p++)
{
sum = L_deposit_h(shr(x[n],1));
sum = L_msu(sum,a[p][0],w1[p]);
sum = L_msu(sum,a[p][1],w2[p]);
w[p] = shl(round(sum),1);
sum = L_mult(b[p][0],w[p]);
sum = L_mac(sum,b[p][1],w1[p]);
y[n] = add(round(sum),y[n]);
w2[p] = w1[p];
w1[p] = w[p];
}
sum = L_mult(x[n],k);
y[n] = add(round(sum),y[n]);
fclose(fpx);
fclose(fpy);
printf("\nSimulare reusita");
return(0);
}