Verfasst am: 16.06.2015, 09:01
Titel: Bestimmte Elemente zweier Matrizen in eine dritte Matrix
Hallo miteinander,
ich hätte gern mal ein Problem.
Zum grundverständniss: ich habe 2 Ausgangsmatrizen deren Zeilen und spalten sich nach einer 3ten richten und an die richtige Position einer vierten eingeordnet werden müssen.
z.B. Kte1=[A1 A2 A3 A4 A5 A6; A7 A8 A9 A10 A11 A12;A13 A14 A15 A16 A17...] so das eine 6x6 Matrix entsteht. Abhängig sind diese jetzt von[v11 v12 v21 v22 v31 v32]. Die Kte2 Mtrix ist jetzt ebenfalls eine 6x6 Matrix die abhängig ist von [v31 v32 v41 v42 v11 v12]. In einer 3ten ist bestimmt wie die zuordnung ist, in dem fall [1 2 3; 3 4 1](jeweils zu vij, i=1-4, j=1-2).
jetzt wird auf die einzelnen Matrizen zugegriffen und in eine vierte an die richtige Position geschrieben. Diese Matrix ist jetzt eine 8x8 Matrix(aus 2 mal 4 unterschiedlichen Elementen von [1 2 3; 3 4 1]) mit der richtigen reihenfolge [v11 v12 v21 v22 v31 v32 v41 v42]. jetzt müssen die jeweiligen Elemente aus den ersten beiden an die richtige stelle der 4ten.
Mein bisheriger Code
HP
C=(E/((1+nu)*(1-2*nu)))*[(1-nu) nu 0;nu (1-nu)0; 00((1-2*nu)/2)];
KnotenM=size(COORD);
Knoten=KnotenM(1,1);
elementeM=size(node_connectivity);
elemente=elementeM(1,1);
Fint=zeros(2*Knoten,1)
Kt=zeros(2*Knoten) %2 Verschiebungen pro Knoten, erzeugt eine leere Steifigkeitsmatrix
k=0;
kk=0
%% Kte und Fint for m=1:elemente;
ue=[2;3;5;1;4;7];
[Feint,Kte] = Elementroutine(m,C,COORD,node_connectivity,ue);
%% Einbau in die Gesamtmatrizen
Kte
for z=1:2:6;
kk=kk+1 for s=1:2:6;
Kt(node_connectivity(m,kk)+2,node_connectivity(m,kk)+2) = ...
Kt(node_connectivity(m,kk)+2,node_connectivity(m,kk)+2)+ Kte(z,s);
Ich weiss nicht wie es den anderen geht, aber mein Gefühl lautet "aaargh, das muss ich alles durchlesen und verstehen bevor ich helfen kann????"
Gleichzeitig ist die Überschrift simpel: "Bestimmte Elemente zweier Matrizen in eine dritte Matrix". Da denke ich mir, wo ist das Problem, kann er nicht einfach das Beispiel auf etwas runterbreche so wie:
Code:
A=[123; 456]% Start
B=[A(2,3), A(1,1); A(2,1:2)]% Ziel - aber es soll eigentlich ganz anders aussehen, oder es wirft einen Fehler
und welches?
sonst kann ich mich andreas nur anschließen.
ich seh da nicht durch was da passieren soll. die bildungsvorschrift die du versuchst verbal im text zu beschrieben raff ich so erstmal nicht auf die schnelle
am besten ist du brichst das auf ein minimalbeispiel runter. ohne überflüssige passagen. so wie ich das verstehe haben 90% deines codes garnichts mit dem problem zu tun.
grüsse winkow
_________________
b=[12 ;31]%Unbekanten der ersten und zweiten Matrix[K1;K2] in b steht 1 für v11 und v12 , die 2 v21 und v22 usw.
%Ziel
K=[K1(1,1)+K2(3,3), K1(1,2)+K2(3,4), K1(1,3), K1(1,4), K2(3,1), K2(3,2);
K1(2,1)+ K2(4,3),K1(2,2)+K2(4,4) usw...] %in der Endmatrix sind die Werte dann geordnet von v11 bis v32
Also das grundlegende Problem ist das erzeugen der Gesamtmatrix. Kt1, Kt2 und b habe ich, ich komm aber auf kein möglichen Algorithmus, der das hinbekommt.
heissen? Da würde ich eine Logik erkennen. Alle Elemement K1(1, werden mit allen K2(3, addiert, nur halt über einen verschobenen Index. Und die Frage wäre dann wir man das automatisiert, richtig?
Eine Logik steckt nicht hinter der Reihenfolge. Die Reihenfolge hängt von der Matrix ,indem Fall b, ab. Das heißt die erste zeile von b gibt den Spalten bzw Zeilennamen für die erste Matrix. Die zweite Zeile dementsprechend für die zweite Matrix.
bsp.
K2=[1 2 3 4;
5 6 7 8;
9 10 11 12;
13 14 15 16]
dazu gehört von b=[ 3 1] (3= 5 und 6, 1=1 und 2)diese Zahlen geben jetzt gleichzeitig vor, in welcher Zeile bzw. Spalte die Elemente in die Hauptmatrix K geschrieben werden müssen.
K=[11 12 0 0 9 10;
15 16 0 0 13 14;
0 0 0 0 0 0;
0 0 0 0 0 0;
3 4 0 0 1 2;
7 8 0 0 5 6;]
MfG
m gehört zu einer Schleife und beschreibt das Element. m=1 dann wird Kte1 bearbeitet ; m = 2 , Kte2.
Dann solltest du Kte als Cell Array definieren und Kte{m} verwenden. Das dürfte es deutlich erleichtern.
Für weitere Unterstützung bitte den kompletten aktuellen Code, gerne als .m angehängt.
Grüße,
Harald
Einstellungen und Berechtigungen
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.