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

Zeilenvektoren aus Matrix berechnen

 

mathphys
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.06.11
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 15.07.2011, 12:57     Titel: Zeilenvektoren aus Matrix berechnen
  Antworten mit Zitat      
Hallo

ich habe eine mx3 Matrix im Format double.

m habe ich bestimmt. Nun möchte ich aus dieser Matrix m Zeilenvektoren machen (die natürlich x,y,z Komponente haben, daher drei Spalten)

Ich vermute, dass dies über eine for Schleife gemacht werden muss, ich weiss aber leider nicht wie genau.

Eine Schleife oder ähnliches sollte es deshalb sein, weil ich verschiedene Matrizen bekomme, die ich in Zeilenvektoren verwandeln will. Die haben aber immer drei Spalten, nur unterschiedliche Zeilenzahl.

Danke für Hilfe
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste

Zuletzt bearbeitet von mathphys am 15.07.2011, 13:09, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 15.07.2011, 13:09     Titel:
  Antworten mit Zitat      
Hallo

In welche Variablen werden denn die Zeilen Vektoren abgelegt?
Du musst doch für dein m genauso viele Variablen anlegen.
Deswegen empfehle ich dir Cell.

Code:

m=10
A=rand(m,3)
% B ist eine Cell mit 10 Zeilenvektoren
B=num2cell(A,2)
 
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: 15.07.2011, 13:10     Titel:
  Antworten mit Zitat      
Ich will deshalb Zeilenvektoren, weil ich dann als nächsten Schritt Abstände und Längen berechnen will. Es sollten daher wirklich einzelne Zeilenvektoren sein.

Eine Idee wäre es Zeilenweise die Zellen auszulesen und dann als neue Varianble zu speichern.

Beispielsweise heisst meine Matrix data_final und dann könnte ich den Zeilenvektor vek 1 schreiben als

Zitat:
vek1=[data_final(1,1), data_final(1,2), data_final(1,3)]


Doch wie automatisiere ich das, dass ich die Variablen vek1 bis vekm bekomme?
_________________

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

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 15.07.2011, 13:35     Titel:
  Antworten mit Zitat      
Also in der Matrix wäre es doch viel einfacher Abstände und Länge zu berechnen. Ehrlich ich verstehe ich nicht, wie du das verwalten möchtest.

Aber um deine Frage zu beantworten, musste mit NUM2CELL, EVAL und DEAL weiterarbeiten.
Code:

m=10
data_final=rand(m,3);
% B ist eine Cell mit 10 Zeilenvektoren
B=num2cell(data_final,2);
% mit Deal kann man Cell auf mehrere Variablen verteilen
[a1,a2,a3,a4,a5,a6,a7,a8,a9,a10]=deal(B{:});

% automatisch verteilen, kann mit Hilfe von EVAL erreichen:
eval(sprintf('[%s]=deal(B{:});',sprintf('vek%d,',1:m)))

whos
 


Zuletzt bearbeitet von denny am 15.07.2011, 14:07, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 15.07.2011, 13:40     Titel:
  Antworten mit Zitat      
Hallo mathphys,
der erste Vorschlag von Denny, erfüllt doch deine Wünsche.

Auf die einzelnen Zeilen zugreifen, kannst du dann mit
Code:

B{1}
B{2}
...
B{10}
 


Wobei dieser Schritt nicht nötig ist und du eigentlich auch mit der Matrix weiterarbeiten kannst.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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: 16.07.2011, 09:23     Titel:
  Antworten mit Zitat      
Erstmal Danke für die Tipps, ich werde mich heute weitere daran setzen und sehen ob ich es hinkriege. Eines aber:

denny hat Folgendes geschrieben:
Also in der Matrix wäre es doch viel einfacher Abstände und Länge zu berechnen.


Wie soll denn das gehen und als was würde da von matlab interpretiert werden? Das ist keine wohldefinierte Mathematik. Führe den Punkt bitte genauer aus.

Gruß
_________________

Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
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: 16.07.2011, 19:46     Titel:
  Antworten mit Zitat      
Hi

ich habe mein Problem nun selbst lösen können Very Happy

Dies ist mein Code und er funktioniert genau so wie ich das will:

Code:
for i=1:dim_row_data
    eval(['vek',num2str(i),'= ', 'data_final(i,:);' ])
end    


Die Variable dim_row_data hatte ich zuvor erstellt und sie enthält die Anzahl der Zeilen der Matrix data_final

Ich bin gerade total glücklich, denn dies oben ist (auch wenn es den Profis hier trivial erscheint) mein erstes, zum größten Teil, selbst gelöstes Problem. Cool

Grüsse
_________________

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

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.07.2011, 10:34     Titel:
  Antworten mit Zitat      
mathphys hat Folgendes geschrieben:
Erstmal Danke für die Tipps, ich werde mich heute weitere daran setzen und sehen ob ich es hinkriege. Eines aber:

denny hat Folgendes geschrieben:
Also in der Matrix wäre es doch viel einfacher Abstände und Länge zu berechnen.


Wie soll denn das gehen und als was würde da von matlab interpretiert werden? Das ist keine wohldefinierte Mathematik. Führe den Punkt bitte genauer aus.

Gruß


mit der Matrix kannst du alle mathematische Operation duchführen, es ist doch nicht anderes als Sammlung von Vektoren, also kannst du auf jeden Vektor zu jeder Zeit auf Vektoren zugreifen:
Code:

M=rand(5,3)
% Zeilenvektor vek1+vek3
M(1,:)+M(3,:)
 
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.