Einzelnen Beitrag anzeigen

Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: C++ Complex Typ nach Pascal

  Alt 21. Nov 2006, 17:23
Delphi-Quellcode:
function AddComplex( z1, z2: complex ): complex;
begin
// wie man das macht, weiss ich jetzt nicht, sollte/dürfte gar nicht so schwer sein
// einfach die c++ implemetation anschauen und übersetzen
end;

function MulComplex( z1, z2: complex ): complex;
begin
// wie man das macht, weiss ich jetzt nicht, sollte/dürfte gar nicht so schwer sein
// einfach die c++ implemetation anschauen und übersetzen
end;

function DivComplex( z1, z2: complex ): complex;
begin
// wie man das macht, weiss ich jetzt nicht, sollte/dürfte gar nicht so schwer sein
// einfach die c++ implemetation anschauen und übersetzen
end;

procedure BIQUAD.GetFrqResponse(var module_dB, phase_degree:f64; f_Hz:f64 );
var
  response, z1, z2: complex;
  omega: double;
begin
  omega := 2.0 * PI *f_Hz / fs;

  z1.real_ := cos(omega);
  z1.imag := sin(omega); // Z^(-1)
  
  
  z2.real_ := cos(2.0 * omega);
  z2.imag := sin(2.0 * omega); // Z^(-2)
  
  // response = (b0 + (b1*z1) + (b2*z2))/(1.0 + (a1*z1) + (a2*z2));
  
  // um response zu kalkulieren muss man wissen wie man imaginere zahlen addiert,
  // multipliziert und dividiert
  // in c++ implementiert man operator overloading, was in füheren Delphi versionen
  // nicht geht, so dass man dies über die entsprechenden funktionen machen muss
  
  // noch was , statt ??? musst du herausfinden wie man 1 in komplexzahlen ausdruckt
  // dies sollet nicht schwierig sein
  
  response := AddComplex( b0 , AddComplex( MulComplex(b1, z1) , DivComplex( MulComplex(b2, z2) ,
      AddComplex( ??? , AddComplex( MulComplex(a1, z1) , MulComplex(a2, z2)) ) ) ) );

  module_dB := 20.0 * log10(sqrt(srd(response.real_) + srd(response.imag)));
  phase_degree := (180.0 / PI) * atan2( response.imag ,response.real_);
  
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat