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

Matrize elementweise Ausgeben lassen

 

belsebub01
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2010, 16:52     Titel: Matrize elementweise Ausgeben lassen
  Antworten mit Zitat      
Hallo werte Forumleser,

ich arbeite seit ein paar Tagen mit Matlab und habe folgendes Problem bzw. komme nicht weiter.

Ich möchte Matrizenmultiplikation durchführen und mir die Elemente der neuen Matrize spaltenweise ausgeben lassen. Also insgesamt 9 Spalten. Weiterhin sind die zu multiplizierenden Matrizen von einer freilaufenden Variablen abhängig. D.h. es enstehen in meinem Fall 201 neue Matrizen durch die Matrizenmultiplikation. Am Ende sollen alle ersten Elemente in der ersten Spalte stehen. In der zweiten Spalte dann alle zweiten Elemente untereinander usw.

Hab mal angefangen, haut allerdings nicht hin. Hier ein Auszug meines Skriptes:

%
%Matrizenprodukt:
for
i=1:1:length(daten(:,1))
%für jedes i soll jetzt eine neue Matrix erzeugt werden
% t_p und t_f sind abhängig von i
erg = t_p' * t_f
%Spalte Cxx
m_b(1,1,1) = erg(1)
%Spalte Cxy
m_b(2,2) = erg(2)
%Spalte Cxz

end

Habt ihr vielleicht ne Idee?
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: 24.09.2010, 17:29     Titel: Re: Matrize elementweise Ausgeben lassen
  Antworten mit Zitat      
Hallo belsebub01,

Code:

    %für jedes i soll jetzt eine neue Matrix erzeugt werden
    % t_p und t_f sind abhängig von i
    erg = t_p' * t_f
 

Um Dein Problem verstehen zu können, müßtest Du erklären was t_p und t_f ist. Woher kommen die 201 Matrizen?

Poste doch mal den Code so weit, dass er Dein Problem vollständig wiedergibt.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2010, 10:08     Titel:
  Antworten mit Zitat      
Hallo Jan, hier mal etwas mehr aus meinem Skript:

>>clear all


e = [0.01018;0.024;0.034]
e = e / norm(e) * -0.016


daten = csvread('Referenzpunkte.csv',1,1)

%Erzeugen der Transformationsmatrizen auf Grundlage der
%Referenzpunkte
%pel und fem sind erzeugte Elemente einer zuvor eingelesenen csv-Datei mit 201 Zeilen
%diese wurden in 18 Spalten (2x9) abgelegt
%deren Erzeugung habe ich hier nicht mit aufgeführt

for i=1:1:length(daten(:,1))

t_p = [pel(i,1) pel(i,4) pel(i,7);
pel(i,2) pel(i,5) pel(i,Cool;
pel(i,3) pel(i,6) pel(i,9); ];
t_f = [fem(i,1) fem(i,4) fem(i,7);
fem(i,2) fem(i,5) fem(i,Cool;
fem(i,3) fem(i,6) fem(i,9); ];

%Erzeugung eines Vektors

work = t_p' * t_f * e
%x-Komponente
e_f(i,1) = work(1)
%y-Komponente
e_f(i,2) = work(2)
%z-Komponente
e_f(i,3) = work(3)

%end
%Bestimmung der Kardanwinkel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Erzeugen der Bewegungsmatrix
%
%Matrizenprodukt:
for
i=1:1:length(daten(:,1))
%für jedes i (201) soll jetzt eine neue Matrix (aus 2 3x3 Matrizen) erzeugt werden
% t_p und t_f sind abhängig von i
erg = t_p' * t_f
%Spalte Cxx
m_b(1,1,1) = erg(1)
%Spalte Cxy
m_b(2,2) = erg(2)
%Spalte Cxz

end


Ich hoffe nun ist es etwas eindeutiger...
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: 26.09.2010, 21:36     Titel:
  Antworten mit Zitat      
Hallo belsebub01,

ok, jetzt wird das Programm etwas klarer. Was ist nun genau Deine Frage? Kannst Du eine Zeile benennen, die nicht das von Dir gewünschte Ergebnis liefert?

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2010, 10:02     Titel:
  Antworten mit Zitat      
Ich multipliziere die beiden Matrizen mit der Zeile:

erg = t_p' * t_f

daraufhin entsteht eine neue 3x3 Matrize, die ich mir nun spaltenweise nebeneinander ausgeben lassen möchte in folgender Form:

1. Spalte - 1.Zeile/1.Spalte meiner neu erzeugten Matrix
2. Spalte - 2.Zeile/1.Spalte meiner neu erzeugten Matrix
3. Spalte - 3.Zeile/1.Spalte meiner neu erzeugten Matrix
4. Spalte - 1.Zeile/2.Spalte meiner neu erzeugten Matrix
5. Spalte - 2.Zeile/2.Spalte meiner neu erzeugten Matrix
6. Spalte - 3.Zeile/2.Spalte meiner neu erzeugten Matrix
7. Spalte - 1.Zeile/3.Spalte meiner neu erzeugten Matrix
8. Spalte - 2.Zeile/3.Spalte meiner neu erzeugten Matrix
9. Spalte - 3.Zeile/3.Spalte meiner neu erzeugten Matrix

Das hieße es müssten am Ende 9 Spalten sichtbar sein mit 201 Zeilen, da meine Matrizen ja von i abhängen und das bekanntlich bis 201 reicht.

Nun zur Ausgabe:

Ich habs bisher so versucht:

%Spalte 1
m_b(1,1,1) = erg(1)

%Spalte 2
m_b(2,2,1) = erg(2)

%Spalte 3
m_b(3,3,1) =erg(3)

Mir ist aber schnell aufgefallen, das das so nicht funktionieren kann, da ich das i nicht wirklich berücksichtige bei der Ausgabe.

m_b(Spalte bei der Ausgabe, Zeile meiner neu erzeugten Matrize, Spalte meiner neu erzeugten Matrize) ---> wie macht man das richtig? bzw. muss ich zuvor noch eine neue laufende Variable definieren?

Gruß
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: 27.09.2010, 15:09     Titel:
  Antworten mit Zitat      
Hallo belsebub01,

Ich habe schon in der ersten Zeile Probleme, Dir zu folgen:
Zitat:
Ich multipliziere die beiden Matrizen mit der Zeile:

Von welchen "beiden Matrizen" sprichst du hier?
Ist das für die Beantwortung Deines Problems irgendwie wichtig?

Zitat:

daraufhin entsteht eine neue 3x3 Matrize, die ich mir nun spaltenweise nebeneinander ausgeben lassen möchte in folgender Form:
1. Spalte - 1.Zeile/1.Spalte meiner neu erzeugten Matrix
...
9. Spalte - 3.Zeile/3.Spalte meiner neu erzeugten Matrix

Das hieße es müssten am Ende 9 Spalten sichtbar sein mit 201 Zeilen, da meine Matrizen ja von i abhängen und das bekanntlich bis 201 reicht.

Was beudetet "ausgeben lassen"? Möchtest Du ins Commandwindow schreiben? Oder willst Du ein neues Array erzeugen?
Wieso hängt welche Matrix (nicht Matrize) von i ab?

Kannst Du alles überflüssige aus Deinem Beispiel mal rauswerfen? Dann wird es vielleicht klarer. Statt "cvsread" einfach Dummies mit RAND erzeugen.

Vielleicht hilft dir dies, das ist aber nur mal blind in den Nebel gestochert:
Code:

X = zeros(201, 3, 3);
for i = 1:201
  X(i, :, :) = rand(3, 3);
end
 

Gruß, Jan
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.