Verfasst am: 15.07.2011, 12:57
Titel: Zeilenvektoren aus Matrix berechnen
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
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)
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
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)))
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
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.
Grüsse
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
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:
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
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.