WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

rechnen mit komplexen Zahlen in Matlab

 

kompl

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2009, 13:59     Titel: rechnen mit komplexen Zahlen in Matlab
  Antworten mit Zitat      
Ich arbeite gerade mit komplexen Zahlen und bin auf ein Problem gestoßen.
Aus einem externen Programm habe ich einen Vektor mit Polen und Nullstellen. Bei diesen Polen und Nullstellen kommt es auch vor, dass diese komplex bzw konjugiert komplex sind. Normalerweise fällt der Imaginärteil einer komplexen Zahl "weg", wenn man diesen mit dem konjungiert komplexen multipliziert. Da aber in den letzten Kommastellen Differenzen vorhanden sind,passiert dies nicht.
Bsp:
Code:

p=
1.0e+003 *
 -0.01202136998036 + 1.07876008538926i
 -0.01202136998028 - 1.07876008538930i
 -0.02253280706984 - 1.24168308041067i
 -0.02253280706898 + 1.24168308041177i
 


Also hab ich mir gedacht, wird einfach gerundet:
Code:

round(p*1e7)/1e7
p=
1.0e+003 *
 -0.01202137000000 - 1.07876008540000i
 -0.01202137000000 + 1.07876008540000i
 -0.02253280710000 - 1.24168308040000i
 -0.02253280710000 + 1.24168308040000i
 

Ziel ist nun eine transfer function zu realisieren

Also:
Code:

s=tf('s');
H=tf(1);
for i=1:size(p,1)
    H=H*(s-p(i));
end
H=1/H;
 


Normalerweise müssten beim "plot" mit zpk() nun die imaginären Anteile herausgekürtzt sein, sind sie aber nicht:
Code:

zpk(H)
 
Zero/pole/gain:
                                   1
-----------------------------------------------------------------------
(s+(12.02-1079i)) (s+(12.02+1079i)) (s+(22.53+1242i)) (s+(22.53-1242i))
 


Ergebnis sollte eigentlich das sein:
Code:

                           1
-------------------------------------------------------
(s^2  + 24.04s + 1.164e006) (s^2  + 45.06s + 1.543e006)
 


Problem ist anscheinend, dass trotz des rundens, Matlab die konjungiert komplexen Zahlen nicht erkennt, denn hier dürfte kein Imaginärteil mehr sein:
Code:

H
Transfer function:
                                   1
-----------------------------------------------------------------------
s^4 + 69.11 s^3 + (2.707e006+3.638e-012i) s^2 + 8.953e007 s + 1.795e012
 


Kann mir jemand helfen, es ist sehr wichtig.


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.