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

Unterschied Zeilen- und Spaltenvektor

 

Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 15:20     Titel: Unterschied Zeilen- und Spaltenvektor
  Antworten mit Zitat      
Hallo Zusammen,
ich hätte eine kleine Frage:
Gibt es einen Unterschied - vor allem im Hinblick auf Geschwindigkeit und Speicherausnutzung - ob ein großer Vektor (mehrere Millionen Elemente) als Zeilenvektor oder als Spaltenvektor definiert und anschließend mit diesem weiter gerechnet wird?
Vielen Dank im Voraus für eure Hilfe.
mfg

Ajax
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: 01.12.2011, 15:26     Titel: Re: Unterschied Zeilen- und Spaltenvektor
  Antworten mit Zitat      
Hallo Ajax,

Nein, solange es nur um Vektoren geht, werden die Spalten und Zeilen exakt gleich im Speicher abgebildet.

Das sieht bei Matrizen aber ganz anders: Hier folgen die Elemente einer Spalte direkt aufeinander, während die Elemente einer Zeile eine "Spaltenbreite" von einander entfernt sind. Deshalb ist der Zugriff auf "M(:, 1)" viel schneller als auf "M(1, :)".

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

Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 15:32     Titel:
  Antworten mit Zitat      
Hallo Jan,
vielen Dank für die schnelle Antwort!
Nur im sicher zu gehen: wenn ich eine Matrix definiere, dann ist z.B. m = zeros(1000000,3) sinnvoller als m = zeros(3,1000000) wenn mit den Matrizen weiter gerechnet werden soll?!
Viele Grüße

Ajax
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: 01.12.2011, 15:43     Titel:
  Antworten mit Zitat      
Hallo Ajax,

Das kommt darauf an. Wenn Du auf die Untervektoren der Länge 1000000 zugreifen musst, ist [1000000 x 3] die bessere Wahl. Beispiel:
Code:
x = rand(4000, 4000);
tic; for i=1:100; allsum = sum(y, 1); end; toc
% Elapsed time is 0.655572 seconds.

tic; for i=1:100; allsum = sum(y, 2); end; toc
% Elapsed time is 0.824517 seconds

Die Summe kann also über die Spalten schneller berechnet werden. Nun ist hier der Unterschied klein. Sowie die Arrays aber nicht mehr in den Prozessor-Cache passen kann der Unterschied auch ein Faktor von 100 sein.

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

Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 15:50     Titel:
  Antworten mit Zitat      
Hallo Jan,
alles klar. Vielen Dank noch einmal!
Viele Grüße,

Ajax
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.