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

Matrix mit Werten aus einem Vektor

 

papst^
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2014, 15:27     Titel: Matrix mit Werten aus einem Vektor
  Antworten mit Zitat      
Hallo zusammen,

ich bin neu hier und mit MATLAB noch nicht so erfahren.
Hab schon google und alles bemüht, aber noch keine Lösung auf mein Problem gefunden.

Zum Problem:
Ich habe einen Vektor mit Winkeln
z.B.:
Code:
vec = [0;5;10;15]

Die einzelnen Werte sollen jeweils in eine Rotationsmatrix eingesetzt werden.
Hier die Matrizen:
http://de.wikipedia.org/wiki/Drehma.....trizen_des_Raumes_R.C2.B3

Die resultierenden Matrizen muss ich abspeichern da ich diese für eine spätere berechnung brauche. Also z.B. in einem Vektor oder Array etc.

Das Ergebnis sollen 4 Matrizen sein die ich für eine Rotation von einem Punkt anwenden kann:
Code:

rotierter_punkt_1 = rot_matrix(0°)*punkt;
rotierter_punkt_2 = rot_matrix(5°)*punkt;
...
 


Das Problem ist, dass ich gerne ohne Schleifen arbeiten würde. Also mit dem Doppelpunktoperator.

Mein Lösungsversuch war folgender:
Code:

achse = [0;5;10;15]
Rot_2_IST(:,:,:) = [1,0,0;0,cosd(achse(:,1)), -sind(achse(:,1));0 ,sind(achse(:,1)), cosd(achse(:,1))];
 

Als Ergebnis bekomme ich aber einen Vektor der zwar die Matrizen ethählt, diese aber fortlaufen. Also kann ich nicht mehr mit einem Befehl auf diese (einzeln) Zugreifen.

Ich hoffe das man die Frage versetht Confused

Vielen Dank schonmal und auf eine gute Zusammenarbeit
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.04.2014, 16:10     Titel:
  Antworten mit Zitat      
Code:
achse(1,1,:) = [0;5;10;15] ;
Rot =@(x) [repmat([1,0,0],[1,1,numel(achse)]);zeros(1,1,numel(achse)),cosd(x), -sind(x);zeros(1,1,numel(achse)) ,sind(x), cosd(x)];
Rot(achse)

wobei die schleifen lösung nicht schlechter ist.
Code:
achse = [0;5;10;15] ;
for k=1:numel(achse)
    Rot_2_IST(:,:,k) = [1,0,0;0,cosd(achse(k)), -sind(achse(k));0 ,sind(achse(k)), cosd(achse(k))];
end

grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
papst^
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2014, 20:10     Titel:
  Antworten mit Zitat      
Hei,
schonmal vielen Dank!
Hab das ganze jetzt mal getestet und passt Smile
Hintergrund ist der, dass mein Achsvektor auch mal um die 100.000 Einträge haben kann.
Ich hab im Netz gelesen das man bei Berechnungen Zeittechnisch mit dem :-Operator besser
bedient ist wie mit Schleifen.

Ich hab mir das folgendermaßen vorgestellt:

Code:

%Daten lesen
achse = %Datei auslesen...
Rot = @(x)[repmat([1,0,0],[1,1,numel(achse)]);zeros(1,1,numel(achse)),cosd(x),sind(x);zeros(1,1,numel(achse)), sind(x),cosd(x)];
Rot(achse)
punkt = [0;0;1];
rot_punkte(:,1) = Rot(:,:,:) * punkt
 


Also ich les z.B. 1000 Werte ein. Damit errechne ich mir 1000 Rotationsmatrizen (unterschiedliche Winkel,
unterschiedliche Matrizen...). Mit den Matrizen kann ich dan den Rotierten Punkt berrechnen.

Die letzte Zeile im Codebsp. funktioniert nicht. Bekomme immer den folgenden Fehler:

Error using *
Inputs must be 2-D, or at least one input must be scalar.
To compute elementwise TIMES, use TIMES (.*) instead.

Wobei die Rechnung so Funktioniert wenn ich die Matrix von Hand aufstellen.
Also
Code:


rot_punkt = Rot * punkt
 


Ich glaube ich versteh den :-Operator noch nicht ganz...

Aber wenn du sagt das die Schleifenlösung auch nicht schlecht ist, stellt sich ja Grundsätzlich nochmal
die Frage ob es sorum überhaupt Sinn macht? Wobei es wahrscheinlich mal eine gute Übung währe.
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.