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

Vektor Division

 

Pampie
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:13     Titel: Vektor Division
  Antworten mit Zitat      
Hallo Leute,

hoffe, ihr könnt mir helfen.
Aus Messergebnissen habe ich zwei Vektoren (u und i) generiert <10000x1 double> mit je 10000 Werten, alles komplexe Zahlen der Form a+bi.

Nun will ich die Vektoren stellenweise dividieren.
Code:


Leider bekomme ich falsche Werte dabei raus. Habe stichprobenartig einzelne Werte raugenommen und berechnet.

Gibt es einen spezielleren Befehl für die Verwendung von komplexen Vektoren?

Danke und Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:26     Titel:
  Antworten mit Zitat      
H,

eigentlich sollte das so funktionieren.
Ein paar genauere Infos wären nicht schlecht.
Poste doch mal ein paar Zeilen aus jedem Vektor.
Und dann eine Beispiel, wo die Berechnung fehl schlägt.
 
Pampie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:35     Titel:
  Antworten mit Zitat      
Hi, danke für die Antwort.
Zum Beispiel sehen die letzten fünf Zeilen der Vektoren so aus:

Vektor u:
0.0010 - 0.0008i
0.0021 - 0.0004i
-0.0008 + 0.0028i
0.0017 - 0.0485i
-0.0005 + 0.0008i

Vektor i:
0.0027 - 0.0194i
0.0071 - 0.0030i
0.0053 + 0.0245i
-0.1701 - 1.4199i
-0.0031 - 0.0238i

Code:


Vektor r:
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
0.0000 + 0.0000i
-0.0000 - 0.0000i

In der letzten Zeile müsste aber :
Code:
(-0.0005 + 0.0008i):(-0.0031 - 0.0238i) = -0.0304 - 0.02496i


rauskommen.

Der Vektor r ist für mich nicht erklärlich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:40     Titel:
  Antworten mit Zitat      
Hi,

sind in den Vektoren eventuell sehr unterschiedlich große Zahlen drin?

Gib mal das ein:
Code:

a=[1000000+ 100000i;-0.0031 - 0.0238i]
% liefert
% a =
%
% 1.0e+006 *
%
%  1.0000 + 0.1000i
% -0.0000 - 0.0000i
 


Ich vermute, dass du vor dem Vektor r auch einen solchen Faktor hast,
gib mal:
Code:

ein, und sieh nach, ob dann immernoch alles 0 ist.
 
Pampie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:46     Titel:
  Antworten mit Zitat      
Bei Eingabe von
Code:

erscheint nur eine komplexe Zahl
Code:
% -0.0029 - 0.0025i


Wie kommt denn dieser Wert jetzt zu Stande?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.12.2011, 11:48     Titel:
  Antworten mit Zitat      
Hallo

Weil du i als variable benutzt, das ist aber ein reserviertes Wort für komplexe Zahlen.

Also statt i anderen Namen wählen, dann wird es funktionieren

Code:


 u=[0.0010 - 0.0008i
0.0021 - 0.0004i
-0.0008 + 0.0028i
0.0017 - 0.0485i
-0.0005 + 0.0008i ]

c=[0.0027 - 0.0194i
0.0071 - 0.0030i
0.0053 + 0.0245i
-0.1701 - 1.4199i
-0.0031 - 0.0238i]

r=u./c
 



Ausgabe:
Zitat:

0.0475 + 0.0449i
0.2712 + 0.0582i
0.1024 + 0.0548i
0.0335 + 0.0052i
-0.0304 - 0.0250i
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:53     Titel:
  Antworten mit Zitat      
Naja, die Werte in dem Vektor r sind richtig.

Es ist nur ein Anzeige-"Problem", was dadurch entsteht, dass du vermutlich Unterschiede in der Größenordnung der Werte in u und i hast.

Dass nun nicht -0.0304 - 0.02496i rauskommt, liegt daran, dass du beim Nachrechnen per Hand mit gerundeten Werte gerechnet hast.
r(end) ist der richtige (auch wieder gerundet angezeigte) Wert.
 
Pampie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:54     Titel:
  Antworten mit Zitat      
Hallo denny,

Wenn ich den Code so eingebe, wie du (also mit jeweils fünf komplexen Werten) und die Bezeichnung für i ändere, funktioniert es wunderbar.

Verwende ich jedoch die Vektoren mit 10000 Werten, erscheint als Ergebnis wieder der 0-Vektor (s.oben)

Mich würde es eher interessieren, was
Code:

bedeutet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Pampie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:56     Titel:
  Antworten mit Zitat      
Gast1 hat Folgendes geschrieben:


r(end) ist der richtige (auch wieder gerundet angezeigte) Wert.



Müssten es dann nicht auch 10.000 Werte sein und nicht nur einer?
Oder ist dies sowas wie der Mittelwert?

Ach ne, schon kapiert.
Es ist der letzte, genaue Wert des Vektors, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2011, 11:57     Titel:
  Antworten mit Zitat      
r(end) gibt dir einfach den letzten Wert des Vektors aus.

Daran siehst du, dass r eben kein Nullvektor ist, sondern nur "falsch" angezeigt wird.
 
Pampie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.06.11
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 08.12.2011, 12:05     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Hilfe, Leute.

Problem gelöst Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 08.12.2011, 14:15     Titel:
  Antworten mit Zitat      
denny hat Folgendes geschrieben:
Hallo

Weil du i als variable benutzt, das ist aber ein reserviertes Wort für komplexe Zahlen.

Also statt i anderen Namen wählen, dann wird es funktionieren



Hallo Supporter,

das ist so NICHT richtig. Zwar sollte man nicht gerade den Buchstaben i als Variablennamen im Zusammenhang mit komplexen Zahlen benutzen, funktionieren tut es aber trotzdem.

Beweis:

Code:
u=[0.0010 - 0.0008i
0.0021 - 0.0004i
-0.0008 + 0.0028i
0.0017 - 0.0485i
-0.0005 + 0.0008i ]

i=[0.0027 - 0.0194i
0.0071 - 0.0030i
0.0053 + 0.0245i
-0.1701 - 1.4199i
-0.0031 - 0.0238i]

r=u./i

u =

   0.0010 - 0.0008i
   0.0021 - 0.0004i
  -0.0008 + 0.0028i
   0.0017 - 0.0485i
  -0.0005 + 0.0008i


i =

   0.0027 - 0.0194i
   0.0071 - 0.0030i
   0.0053 + 0.0245i
  -0.1701 - 1.4199i
  -0.0031 - 0.0238i


r =

   0.0475 + 0.0449i
   0.2712 + 0.0582i
   0.1024 + 0.0548i
   0.0335 + 0.0052i
  -0.0304 - 0.0250i
 


Das Ergebnis ist korrekt. Das nächste Mal also bitte vor dem Posting testen!

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.12.2011, 14:37     Titel:
  Antworten mit Zitat      
Danke tompie

das habe ich nachhinein auch bemerkt, wollte aber mich nicht korrigieren.
Weil man sollte i und j als Variablen nicht verwenden.
Das steht so in Matlab-Hilfe. Also kann es wohl zu Nebeneffekten führen, die man nicht sieht.
Zitat:

Avoid Using i and j for Variables

MATLAB uses the characters i and j to represent imaginary units. Avoid using i and j for variable names if you intend to use them in complex arithmetic.

If you want to create a complex number without using i and j, you can use the complex function.


http://www.mathworks.de/help/techdo...../f10-60729.html#f10-60799


Und zum Testen der Code habe ich keine Zeit. Mache es während meiner Arbeitspause.




tompie hat Folgendes geschrieben:
denny hat Folgendes geschrieben:
Hallo

Weil du i als variable benutzt, das ist aber ein reserviertes Wort für komplexe Zahlen.

Also statt i anderen Namen wählen, dann wird es funktionieren



Hallo Supporter,

das ist so NICHT richtig. Zwar sollte man nicht gerade den Buchstaben i als Variablennamen im Zusammenhang mit komplexen Zahlen benutzen, funktionieren tut es aber trotzdem.

Beweis:

Code:
u=[0.0010 - 0.0008i
0.0021 - 0.0004i
-0.0008 + 0.0028i
0.0017 - 0.0485i
-0.0005 + 0.0008i ]

i=[0.0027 - 0.0194i
0.0071 - 0.0030i
0.0053 + 0.0245i
-0.1701 - 1.4199i
-0.0031 - 0.0238i]

r=u./i

u =

   0.0010 - 0.0008i
   0.0021 - 0.0004i
  -0.0008 + 0.0028i
   0.0017 - 0.0485i
  -0.0005 + 0.0008i


i =

   0.0027 - 0.0194i
   0.0071 - 0.0030i
   0.0053 + 0.0245i
  -0.1701 - 1.4199i
  -0.0031 - 0.0238i


r =

   0.0475 + 0.0449i
   0.2712 + 0.0582i
   0.1024 + 0.0548i
   0.0335 + 0.0052i
  -0.0304 - 0.0250i
 


Das Ergebnis ist korrekt. Das nächste Mal also bitte vor dem Posting testen!

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 09.12.2011, 12:22 Uhr von denny
Von Mathematik nach Programmierung
 
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.