- function [num_paralelo,den_paralelo]=formaParalela(b,a)
- % forma paralela dado um polinomio H=b/a
- % input: formaParalela(b,a)
- % resposta do tipo
- %
- % [0 bk1 bk2 1 ak1 ak2]
- %
- % onde a funcao correspondente e':
- %
- % bk1z+bk2
- %-----------
- %z^2+ak1z+ak2
- %
- % fonte: Diniz, Digital Signal Processing 2nd Ed (p. 265)
- [Residuos,Polos,Constante]=residue(b,a);
- Nparalelo=length(Polos);
- polos_reais=cplxpair(Polos);
- residuos_reais=zeros(Nparalelo,1);
- for i=1:Nparalelo,
- residuos_reais(find(polos_reais==Polos(i)),1)=Residuos(i);
- end;
- num_blocks=ceil(Nparalelo/2);
- Hparalelo=zeros(num_blocks,6);
- for count_p =1:num_blocks,
- if length(polos_reais)~=1,
- Hparalelo(count_p,2)=residuos_reais(1)+residuos_reais(2);
- Hparalelo(count_p,3)=-residuos_reais(1)*polos_reais(2)-polos_reais(1)*residuos_reais(2);
- Hparalelo(count_p,5)=-polos_reais(1)-polos_reais(2);
- Hparalelo(count_p,6)=polos_reais(1)*polos_reais(2);
- residuos_reais(1:2) = []; polos_reais(1:2) = [];
- else,
- Hparalelo(count_p,2) = residuos_reais(1);
- Hparalelo(count_p,5) = -polos_reais(1);
- end;
- Hparalelo(count_p,4) = 1;
- end;
- Hparalelo= real(Hparalelo)
O arquivo deve ser salvo com o nome formaParalela.m e, caso precise de ajuda, o cabeçalho comentado é acessado através de help formaParalela.
Nenhum comentário:
Postar um comentário