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

Matrix Multiplikation mit komplexen Zahlen

 

derheld2k1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2009, 21:25     Titel: Matrix Multiplikation mit komplexen Zahlen
  Antworten mit Zitat      
Hallo,

Ich habe eine Anwendung in der eine MxM Matrix mit einem Mx1 Spaltenvektor multipliziert werden muss. Die Elemente der Matrix und des Vektors sind komplexwertig. Soweit ganz einfach.
Nun soll der Code aber später in C Implementiert werden, also kann man nicht mehr einfach mit komplexen Zahlen rechnen. Deshalb teile die die komplexen Zahlen und sämtliche Berechnungen in Real- und Imaginärteil auf.

Code:

%% Testdaten
% komplexe Referenzwerte
A = randn(21,21) + j*randn(21,21);
b = randn(21,1) + j*randn(21,1);

% aufgeteilt in Real und Imag. Teil
Are = real(A);
Aim = imag(A);

bre = real(b);
bim = imag(b);

%% Referenzberechnung
Ref = A * b;

%% Berechnung mit Real/Imaginärteil
Re = Are * bre - Aim * bim;
Im = Aim * bre + Are * bim;
Test = Re + j*Im;

%% Fehler Ausgeben
Test - Ref
 


Meine aktuelle Lösung funktioniert leider nicht, und ich suche bereits seit 2 Wochen vergeblich einen Lösungsansatz.
Der Fehler ist im Bereich von 10^-7, muss aber null werden.

Hat jemand eine Idee?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.12.2009, 23:12     Titel:
  Antworten mit Zitat      
Hallo,

ich habe das nachprobiert, und komme auf mit
Code:
max(abs(Test - Ref))

auf eine maximale Abweichung < 1e-14.

Solche Abweichungen sind bei Umformulierungen von nichts ungewöhnliches. Wenn ich es richtig sehe, ist das konkrete Problem hier: das eine Mal wird sum(a+bi) genommen, das andere Mal sum(a) + sum(b)*i.
Darf ich fragen, warum Abweichungen in dieser Größenordnung relevant sind?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
derheld2k1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2009, 12:57     Titel:
  Antworten mit Zitat      
Die Berechnung ist Teil des RLS Algorithmus der iterativ ist.
Der Fehler pflanzt sich also mit jeder Iteration fort, wird sehr groß und somit konvergiert der Algorithmus nicht mehr.

Zitat:
das eine Mal wird sum(a+bi) genommen, das andere Mal sum(a) + sum(b)*i

Ich denke nicht dass es daran liegt, da die Berechnung mit Skalaren funktioniert.

Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2009, 13:40     Titel:
  Antworten mit Zitat      
Hallo,

ob es nun an der Ordnung der Operationen liegt oder nicht, wird sich schwer belegen lassen.
Ich kenne natürlich deinen Algorithmus nicht, aber mir ist noch kein iterativer Algorithmus untergekommen, für den Abweichungen in dieser Größenordnung generell ein Problem sind.
Ich wüsste jedenfalls nicht, wie sich das beheben ließe. Vielleicht hat ja jemand anders eine Idee.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
derheld2k1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2009, 14:40     Titel:
  Antworten mit Zitat      
Trotzdem Danke für deine Hilfe,
ich habe mich anfangs auch gewundert dass so ein geringer Fehler den ganzen Algorithmus versaut. Aber nach ewiger Fehlersuche "steht fest" dass es an diesen "komplexen" Multiplikationen liegen muss.
 
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 - 2025 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.