Mostrando postagens com marcador processamento de sinais. Mostrar todas as postagens
Mostrando postagens com marcador processamento de sinais. Mostrar todas as postagens

10 de nov. de 2012

Passar função de transferência para forma Paralela

Eis aqui um script de matlab para passar uma função de transferência H(z) = b(z)/a(z) para a forma paralela, utilizando blocos de segunda ordem . A função residue retorna simplesmente valores de primeira ordem, com coeficientes complexos. Utilizando esta função, o valor retornado já é da forma (bk1z+bk2)/(z^2+ak1z+ak2).


  1. function [num_paralelo,den_paralelo]=formaParalela(b,a)
  2. % forma paralela dado um polinomio H=b/a
  3. % input: formaParalela(b,a)
  4. % resposta do tipo
  5. %
  6. % [0 bk1 bk2 1 ak1 ak2]
  7. %
  8. % onde a funcao correspondente e':
  9. %
  10. % bk1z+bk2
  11. %-----------
  12. %z^2+ak1z+ak2
  13. %
  14. % fonte: Diniz, Digital Signal Processing 2nd Ed (p. 265)
  15. [Residuos,Polos,Constante]=residue(b,a);
  16. Nparalelo=length(Polos);
  17. polos_reais=cplxpair(Polos);
  18. residuos_reais=zeros(Nparalelo,1);
  19. for i=1:Nparalelo,
  20.    residuos_reais(find(polos_reais==Polos(i)),1)=Residuos(i);
  21. end;
  22. num_blocks=ceil(Nparalelo/2);
  23. Hparalelo=zeros(num_blocks,6);
  24. for count_p =1:num_blocks,
  25.   if length(polos_reais)~=1,
  26.     Hparalelo(count_p,2)=residuos_reais(1)+residuos_reais(2);
  27.     Hparalelo(count_p,3)=-residuos_reais(1)*polos_reais(2)-polos_reais(1)*residuos_reais(2);
  28.     Hparalelo(count_p,5)=-polos_reais(1)-polos_reais(2);
  29.     Hparalelo(count_p,6)=polos_reais(1)*polos_reais(2);
  30.     residuos_reais(1:2) = []; polos_reais(1:2) = [];
  31.   else,
  32.     Hparalelo(count_p,2) = residuos_reais(1);
  33.     Hparalelo(count_p,5) = -polos_reais(1);
  34.   end;
  35. Hparalelo(count_p,4) = 1;
  36. end;
  37. 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. 

Quem sou eu

Raphael Fernandes
Carioca, Brasileiro, Estudante de Robótica
Hiperativo, Imperativo
Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
Musicalmente falando, sou assim.

Related Posts Plugin for WordPress, Blogger...

Veja também...