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

Seltsame Definition einer Matrix und Rolle des Semikolon

 

mathphys
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 12:29     Titel: Seltsame Definition einer Matrix und Rolle des Semikolon
  Antworten mit Zitat      
Hallo

ich habe folgende Definition einer Matrix:

Code:
r(:,1) = xG';
r(:,2) = yG';
r(:,3) = zG';


Dabei sind xG, yG, zG, drei Vektoren (1x3 Matrizen in double) die ich habe.

Was passiert da? Ich dachte, dass Matrix(:,n) die n-te Spalte von Matrix ausgibt. In meinem Code existiert aber keine Matrix r. Shocked

Ein Beispiel: Ich habe

Code:
xG =

   -0.2595   -0.8905   -0.3736


und erhalte

Code:
r(:,1)=xG'

r =

   -0.2595    0.9637   -0.0628
   -0.8905   -0.2640   -0.3705
   -0.3736   -0.0402    0.9267


und mit Semikolon erhalte ich keine Ausgabe im prompt. gebe ich dann ans ein, kommt 0.


2.) Was ist eigentlich die Rolle des Semikolons hinter MATLAB Befehlen. Ich dachte bis jetzt, dass das nur bedeutet, dass MATLAB es als Befehl interpretiert, doch z.B.

Code:
r(:,1) = xG';


ergibt ein anderes Ergebnis als

Code:
r(:,1) = xG'


Wo ist der Unterschied?

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

1. du kannst mit Indizierung abfragen, aber auch zuweisen.
Hier wird eine Matrix spaltenweise erstellt.
2. Strichpunkt am Ende einer Zeile unterdrückt die Ausgabe. Das Ergebnis ist also gleich, es wird nur nicht im Command Window angezeigt.

Vielleicht solltest du dir das mit einem Einführungskurs doch nochmal überlegen...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 07.08.2011, 12:43     Titel:
  Antworten mit Zitat      
+1 für Einführungskurs Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 13:30     Titel:
  Antworten mit Zitat      
Ich würde gerne so einen Kurs machen, doch das wird mir nicht bezahlt. Habe ich schon danach gefragt Sad

Wenn auch mühsam, ich lerne dank eurer Hilfe kosequent dazu. Die Zahnräder drehen langsam, doch sie drehen Smile

Zum Code:

Wieso macht denn

Code:
r(:,1)=xG'


eine 3x3 Matrix? Rechts steht ein 3-dim. Spaltenvektor (weil ' Transposition ist) und links definiere ich diese Matrix.

Ich kapiere die Ausgabe nicht. Wie definiert der sich diese Matrix zusammen, die da entsteht? Shocked

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Wenn r vorher nicht existiert, wird da keine 3x3 - Matrix entstehen. Dann wird r schlicht und einfach xG' sein.
Wenn r vorher definiert war, wird der Befehl die erste Spalte verändern.

Im zunächst angegebenen Code wird das dadurch eine 3x3 - Matrix, dass man die Spalten nacheinander belegt.

Was einen Kurs angeht: oft hilft es, den Entscheidungsträgern begreiflich zu machen, dass Arbeitszeit (und damit letztlich auch Geld!) gespart wird, wenn man eine systematische Einführung bekommt anstatt sich von Problem zu Problem zu hangeln.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.08.2011, 14:51     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:


Wenn r vorher nicht existiert, wird da keine 3x3 - Matrix entstehen. Dann wird r schlicht und einfach xG' sein.


Aber das ist hier nicht der Fall.

Ich habe

Code:
xG =

   -0.2595   -0.8905   -0.3736


und ich habe absolut sicher kein r vorher irgendwo definiert oder eingeführt. Es gibt kein r. Dann kommt

Code:
r(:,1)=xG'


und ich erhalte als Ausgabe

Code:
r =

   -0.2595    0.9637   -0.0628
   -0.8905   -0.2640   -0.3705
   -0.3736   -0.0402    0.9267


Das verstehe ich nicht Shocked

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 07.08.2011, 15:03     Titel:
  Antworten mit Zitat      
Dann steht r von der vorherigen Ausführung aber noch im Workspace Wink

Daher gibt er dann die komplette Matrix aus und nicht nur die erste Spalte. Setzte mal ein clear all zu Beginn des m-file und halte direkt nach

Code:
r(:,1)=xG'


an. Dann wird dir nur die 1. Spalte ausgegeben, da r nicht mehr Elemente hat. Im Übrigens ist das Transponieren hier ohne Wirkung, da du explizit angibst, dass die Werte in xG als Spaltenvektor in r geladen werden sollen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.08.2011, 16:49     Titel:
  Antworten mit Zitat      
Hallo mathphys,

Vorher muss ein r existiert haben. Du kannst es ja einfach mal testen und Dir r anzeigen lassen. Zudem könnte noch "whos" hilfreich sein.

Ich rate vom unbedachtem Einsatz von "clear all" ab. Es löscht auch alle in den Speicher geladenen Funktionen, so dass das Nachladen einige Zehntelsekunden bis Sekunden benötigt. Zudem werden alle PERSISTENT Variablen gelöscht und viele Funktionen müssen neu initialisiert werden.
Um Variablen zu löschen ist "clear" ohne "all" viel effizienter. Noch besser ist es, die zu löschende Variable mit anzugeben:
Code:

clear r
xG = [-0.2595   -0.8905   -0.3736];
r(:,1) = xG';
disp(r)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
mathphys
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 08.08.2011, 10:24     Titel:
  Antworten mit Zitat      
Hi

ich kapier es nicht. Ich habe zum heraus finden was passiert eine neue Datei erstellt, den kompletten Speicher extra gelöscht und folgendes eingegeben und erhalten:

Code:
>> xG = [1;1;1]

xG =

     1
     1
     1

>> yG=[2;2;2]

yG =

     2
     2
     2

>> zG = [3;3;3]

zG =

     3
     3
     3

>> r(:,1)=xG'

r =

     1     1     1
     1     2     2
     1     3     3

>> r(:,2)=yG'

r =

     1     2     1
     1     2     2
     1     2     3

>> r(:,3)=zG'

r =

     1     2     3
     1     2     3
     1     2     3
 


Was macht das hier mit meinen Vektoren? Shocked Confused

Grüsse
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.08.2011, 10:38     Titel:
  Antworten mit Zitat      
Hallo,

bitte vor dem Code mal
Code:

eingeben. Es ist offensichtlich doch noch ein r im Workspace. Bei mir kommt nämlich das zu erwartende Ergebnis:
r =
1
1
1
r =
1 2
1 2
1 2
r =
1 2 3
1 2 3
1 2 3

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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.