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

Aus allgemeiner Matrix mit einer for-Schleife zur spez. Matr

 

Berti10
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 04.02.2015, 21:43     Titel: Aus allgemeiner Matrix mit einer for-Schleife zur spez. Matr
  Antworten mit Zitat      
Moin! ich hab leider grade total Schiffbruch mit meinem Code für eine Hausübung meiner Uni erlitten. Da sollte mein Code absolut allgemeingültig geschrieben sein; ich (arbeite erst seit 3 Wochen mit Matlab) hab eine manuelle Adressierung von Matrizen gemacht. Also alles für die Tonne. Mir rennt etwas die Zeit davon; daher hoffe ich auf eure Tipps!

Problem:
Ich soll je nach Anzahl von Elementen (Tragwerksbalken) aus einer allgemein Elementsteifigkeitsmatrix eine bzw. mehrere spez. Matrizen für diese Elemente machen. Meine allgemeine 6x6 Matrix hat also Terme als Einträge und für i= 1 bis n (Anzahl der Elemente/Balken) sollen sollen diese entsprechend der Werte(Länge, Stabilität, Querschnittfläche,...) ausgefüllt und die Matrizen ausgegeben werden. Vorgabe ist, dass dies mit einer for-Schleife geschehen soll. Prinzipiell ist mir das Vorgehen absolut klar; die Umsetzung bzw. die richtige Indizierung ist ein absolutes rätselraten ohne Ergebnis. Kann mir jemand mit einem kleinen Beispiel weiterhelfen?
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: 05.02.2015, 01:13     Titel:
  Antworten mit Zitat      
Zitat:
Prinzipiell ist mir das Vorgehen absolut klar

uns aber nicht
Code:
Ich soll je nach Anzahl von Elementen (Tragwerksbalken) aus einer allgemein Elementsteifigkeitsmatrix eine bzw. mehrere spez. Matrizen für diese Elemente machen.
was das darstellt ist für das problem unerheblich.
Zitat:
i= 1 bis n (Anzahl der Elemente/Balken)

wie kommen die in der matrix vor bzw wie sollen die neu angeordnet werden?
du sihst das sind sehr viele fragen offen. deine beschreibung ist alles andere als ausführlich und es lässt sich so nur schwer helfen. ich kann dir da nur den thread aus meiner signatur empfehlen. du erspaarst dir und uns sehr viel zeit wenn du den inhalt des threads beachtest Smile
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 01:46     Titel:
  Antworten mit Zitat      
Ohje. Dann war wohl doch etwas bandsalat in meinem Kopf.

Ok; ganz allgemein habe ich eine Matrix (in meinem Fall 6X6), die mit diversen Variablen und Termen bestückt ist. Nun komme ich mit Werten daher und möchte, dass mir MATLAB die eben beschriebene allgemeine Matrix ausgibt, jedoch mit den Werten eingesetzt. Je nach Menge der Werte/Wertepaare sollen entsprechend viele Matrizen ausgegeben werden, die ich im nachfolgenden Schritt weiter benutzen kann; sie also einer Variablen (z.B. M1, M2, ..., Mi) zugeordnet wird. Und da liegt mein Problem.
Anders gesagt: Wie kann ich mit einer for-Schleife sagen, dass aus den Werten a1, b1,...,n1 die Matrix M1; aus den Werten a2,b2,...n2 die Matrix M2 usw. gebildet wird, wenn ich eine Matrix Mi für die allgemeinen Variablen ai, bi,...,ni habe?

Beste Grüße
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: 05.02.2015, 02:02     Titel:
  Antworten mit Zitat      
das würde mit eval gehen. allerdings ist das sehr schlecht. du versteckst dabei einen index im variablen namen. das ist umständlich zu generieren und noch umständlicher weiterzuverarbeiten. ein index sollte als index benutzt werden. anstatt a2 also a(2) oder auch a{2} falls es sich bei a2 um eine matrix handelt. das kann man dann auch bequem mit schleifen abarbeiten.
wie gesagt der thread richtig fragen ist sehr gut und sollte von jedem neuling gelesen werden. ein codebeispiel mit dem was du bis jetzt versucht hast ist weitaus einfacher als die ausschließliche umschreibung mit worten. du magst wissen was du erreichen willst und was du für daten hast. wir aber nicht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 11:31     Titel:
  Antworten mit Zitat      
Danke, hab ich gelesen. Du hast recht; mit der richtigen Indizierung habe ich meine Probleme. Bei Matrizen haben Klammern (Beispiel: A(n)=...) auch eine andere Bedeutung, weswegen mir die Ausgabe verweigert wird.

Aktuell habe ich jeden Fall einzeln beschrieben. Würde ich jedoch mehr Eingabedaten haben, könnte mein Code damit nichts ausgeben. Das soll nun mit einer Schleife automatisiert werden.

Ein kleines Beispiel zur Verwendung von eval oder ähnlichen Befehlen würde mir sehr helfen!

Mein aktueller Stand mit manueller Adressierung:

Code:
% Eingabedaten
%Eingabe der Koordinaten fuer jeden Knoten
v1=[6.75;3];
v2=[9.5;4];
v3=[3.5;7];
v4=[3.5;1];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Balkendefinitionen:

Balken1=[v1,v2]
Balken2=[v2,v3]
Balken3=[v3,v4]


%Definitionen
E=2.06e11; %Definition E-Modul in (N/m^2)
A=0.004; %Definition Querschnittsfläche in (m^2)
I=1.5e-5; %Definition Flächenträgheitsmoment in (m^4)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Balkenlängen
l1=sqrt((v2(1,1)-v1(1,1))^2+(v2(2,1)-v1(2,1))^2);
l2=sqrt((v3(1,1)-v2(1,1))^2+(v3(2,1)-v2(2,1))^2);
l3=sqrt((v4(1,1)-v3(1,1))^2+(v4(2,1)-v3(2,1))^2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Drehmatrix Balken 1
c1=(v2(1,1)-v1(1,1))/l1;
s1=(v2(2,1)-v1(2,1))/l1;
C_1=[c1 s1 0;-s1 c1 0;0 0 1]; %Untermatrix der Drehmatrix
o=zeros(3,3);
Lambda1=[C_1 o;o C_1]; %Drehmatrix


%Drehmatrix Balken 2
c2=(v3(1,1)-v2(1,1))/l2;
s2=(v3(2,1)-v2(2,1))/l2;
C_2=[c2 s2 0;-s2 c2 0;0 0 1]; %Untermatrix der Drehmatrix
o=zeros(3,3);
Lambda2=[C_2 o;o C_2]; %Drehmatrix

%Drehmatrix Balken 3
c3=(v4(1,1)-v3(1,1))/l3;
s3=(v4(2,1)-v3(2,1))/l3;
C_3=[c3 s3 0;-s3 c3 0;0 0 1]; %Untermatrix der Drehmatrix
o=zeros(3,3);
Lambda3=[C_3 o;o C_3]; %Drehmatrix


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% Untermatrix gedreht zu Element 1
K_X1=E*I/(l1)^3
K_Z1=E*A/(l1)
K_AA1=[12*K_X1*K_Z1*(s1)^2 -(12*K_X1-K_Z1)*c1*s1 -6*K_X1*l1*s1;
    -(12*K_X1-K_Z1)*c1*s1 12*K_X1*(c1)^2+K_Z1*(s1)^2 6*K_X1*l1*c1;
    -6*K_X1*l1*s1 6*l1*c1 4*K_X1*(l1)^2]

K_AB1=[-(12*K_X1*K_Z1*(s1)^2) (12*K_X1-K_Z1)*c1*s1 -6*K_X1*l1*s1;
    (12*K_X1-K_Z1)*c1*s1 12*K_X1*(c1)^2+K_Z1*(s1)^2 6*K_X1*l1*c1;
    6*K_X1*l1*s1 -6*K_X1*l1*c1 2*K_X1*(l1)^2]

K_BA1=[-(12*K_X1*K_Z1*(s1)^2) (12*K_X1-K_Z1)*c1*s1 6*K_X1*l1*s1;
    (12*K_X1-K_Z1)*c1*s1 -(12*K_X1*(c1)^2+K_Z1*(s1)^2) -6*K_X1*l1*c1;
    -6*K_X1*l1*s1 6*K_X1*l1*c1 2*K_X1*(l1)^2]

K_BB1=[12*K_X1*K_Z1*(s1)^2 -(12*K_X1-K_Z1)*c1*s1 6*K_X1*l1*s1;
    -(12*K_X1-K_Z1)*c1*s1 12*K_X1*(c1)^2+K_Z1*(s1)^2 -6*K_X1*l1*c1;
    6*K_X1*l1*s1 -6*K_X1*l1*c1 4*K_X1*(l1)^2]


% Untermatrix gedreht zu Element 2

K_X2=E*I/(l2)^3
K_Z2=E*A/(l2)
K_AA2=[12*K_X2*K_Z2*(s2)^2 -(12*K_X2-K_Z2)*c2*s2 -6*K_X2*l2*s2;
    -(12*K_X2-K_Z2)*c2*s2 12*K_X2*(c2)^2+K_Z2*(s2)^2 6*K_X2*l2*c2;
    -6*K_X2*l2*s2 6*l2*c2 4*K_X2*(l2)^2]

K_AB2=[-(12*K_X2*K_Z2*(s2)^2) (12*K_X2-K_Z2)*c2*s2 -6*K_X2*l2*s2;
    (12*K_X2-K_Z2)*c2*s2 12*K_X2*(c2)^2+K_Z2*(s2)^2 6*K_X2*l2*c2;
    6*K_X2*l2*s2 -6*l2*c2 2*K_X2*(l2)^2]

K_BA2=[-(12*K_X2*K_Z2*(s2)^2) (12*K_X2-K_Z2)*c2*s2 6*K_X2*l2*s2;
    (12*K_X2-K_Z2)*c2*s2 -(12*K_X2*(c2)^2+K_Z2*(s2)^2) -6*K_X2*l2*c2;
    -6*K_X2*l2*s2 6*l2*c2 2*K_X2*(l2)^2]

K_BB2=[12*K_X2*K_Z2*(s2)^2 -(12*K_X2-K_Z2)*c2*s2 6*K_X2*l2*s2;
    -(12*K_X2-K_Z2)*c2*s2 12*K_X2*(c2)^2+K_Z2*(s2)^2 -6*K_X2*l2*c2;
    6*K_X2*l2*s2 -6*l2*c2 4*K_X2*(l2)^2]



% Untermatrix gedreht zu Element 3

K_X3=E*I/(l3)^3
K_Z3=E*A/(l3)
K_AA3=[12*K_X3*K_Z3*(s3)^2 -(12*K_X3-K_Z3)*c3*s3 -6*K_X3*l3*s3;
    -(12*K_X3-K_Z3)*c3*s3 12*K_X3*(c3)^2+K_Z3*(s3)^2 6*K_X3*l3*c3;
    -6*K_X3*l3*s3 6*l3*c3 4*K_X3*(l3)^2]

K_AB3=[-(12*K_X3*K_Z3*(s3)^2) (12*K_X3-K_Z3)*c3*s3 -6*K_X3*l3*s3;
    (12*K_X3-K_Z3)*c3*s3 -(12*K_X3*(c3)^2+K_Z3*(s3)^2) 6*K_X3*l3*c3;
    6*K_X3*l3*s3 6*l3*c3 2*K_X3*(l3)^2]

K_BA3=[-(12*K_X3*K_Z3*(s3)^2) (12*K_X3-K_Z3)*c3*s3 6*K_X3*l3*s3;
    (12*K_X3-K_Z3)*c3*s3 -(12*K_X3*(c3)^2+K_Z3*(s3)^2) -6*K_X3*l3*c3;
    -6*K_X3*l3*s3 6*l3*c3 2*K_X3*(l3)^2]

K_BB3=[12*K_X3*K_Z3*(s3)^2 -(12*K_X3-K_Z3)*c3*s3 6*K_X3*l3*s3;
    -(12*K_X3-K_Z3)*c3*s3 12*K_X3*(c3)^2+K_Z3*(s3)^2 -6*K_X3*l3*c3;
    6*K_X3*l3*s3 6*l3*c3 4*K_X3*(l3)^2]

%Untermatrizen zusammenbauen

Kelem1=[K_AA1 K_AB1;K_BA1 K_BB1]
Kelem2=[K_AA2 K_AB2;K_BA2 K_BB2]
Kelem3=[K_AA3 K_AB3;K_BA3 K_BB3]

edit winkow: bitte code umgebung verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 11:47     Titel:
  Antworten mit Zitat      
Oder anders gefragt:

A=[1 i;i 2]
for i=1:5

A{i}= %was kommt hier hin? lasse ich es weg, wird mir A{5} als A ausgegeben
end


Was muss ich tun, damit mir die Matrizen 1 bis 5 ausgegeben werden?
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: 05.02.2015, 11:49     Titel:
  Antworten mit Zitat      
ja du hast den index im namen versteckt
in deinem fall wäre die verwendung von cell arrays angebacht
Code:
v{1}=[6.75;3];
v{2}=[9.5;4];
v{3}=[3.5;7];
v{4}=[3.5;1];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Balkendefinitionen:
Balken=cell(1,numel(v)-1);
for k=1:numel(v)-1
Balken{k}=[v{k},v{k+1}] ;
end
 

und so weiter dann für den rest.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 13:22     Titel:
  Antworten mit Zitat      
Moin Winkow!

Dein Beispiel ist (für mich) Gold wert! Klappt wunderbar! Vielen Dank für deine Mühe!!

Beste Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 15:06     Titel:
  Antworten mit Zitat      
Eine Sache klappt dann noch nicht: Wie schaut das mit Matrizen aus? Wenn ich alles so (Copy-paste) fortführe werden mir Matrizen als Zeilen (mit Leerzeichen, anstatt eine neue Zeile auszuführen) ausgegeben. zugeben, die Funktion von cell und numel habe ich zwar nachgelesen, aber nicht wirklich verstanden.

Hier mein aktueller Stand beim Umcodieren:

Code:

% Eingabedaten
% Eingabe der Koordinaten fuer jeden Knoten

v{1}=[6.75;3];
v{2}=[9.5;4];
v{3}=[3.5;7];
v{4}=[3.5;1];

% Definitionen
E=2.06e11; %Definition E-Modul in (N/m^2)
A=0.004; %Definition Querschnittsfläche in (m^2)
I=1.5e-5; %Definition Flächenträgheitsmoment in (m^4)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Balkendefinitionen:
Balken=cell(1,numel(v)-1);
Laenge=cell(1,numel(v)-1);
sin=cell(1,numel(v)-1);
cos=cell(1,numel(v)-1);
C=cell(1,numel(v)-1);
Lambda=cell(1,numel(v)-1);
K_X=cell(1,numel(v)-1);
K_Z=cell(1,numel(v)-1);
K_AA=cell(3,numel(v)-1);
K_AB=cell(3,numel(v)-1);
K_BA=cell(3,numel(v)-1);
K_BB=cell(3,numel(v)-1);



for k=1:numel(v)-1

    Balken{k}=[v{k},v{k+1}] ;
    Laenge{k}=sqrt((v{k+1}(1,1)-v{k}(1,1))^2+(v{k+1}(2,1)-v{k}(2,1))^2);
   
    cos{k}=(v{k+1}(1,1)-v{k}(1,1))/Laenge{k};
sin{k}=(v{k+1}(2,1)-v{k}(2,1))/Laenge{k};
C{k}=[cos{k} sin{k} 0;-sin{k} cos{k} 0;0 0 1]; %Untermatrix der Drehmatrix
o=zeros(3,3);
Lambda{k}=[C{k} o;o C{k}]; %Drehmatrix

K_X{k}=E*I/(Laenge{k})^3
K_Z{k}=E*A/(Laenge{k})

K_AA{k}=[12*K_X{k}*K_Z{k}*(sin{k})^2, -(12*K_X{k}-K_Z{k})*cos{k}*sin{k}, -6*K_X{k}*Laenge{k}*sin{k};
    -(12*K_X{k}-K_Z{k})*cos{k}*sin{k}, 12*K_X{k}*(cos{k})^2+K_Z{k}*(sin{k})^2, 6*K_X{k}*Laenge{k}*cos{k};
    -6*K_X{k}*Laenge{k}*sin{k}, 6*Laenge{k}*cos{k}, 4*K_X{k}*(Laenge{k})^2]

K_AB{k}=[-(12*K_X{k}*K_Z{k}*(sin{k})^2) (12*K_X{k}-K_Z{k})*cos{k}*sin{k} -6*K_X{k}*Laenge{k}*sin{k};
    (12*K_X{k}-K_Z{k})*cos{k}*sin{k} 12*K_X{k}*(cos{k})^2+K_Z{k}*(sin{k})^2 6*K_X{k}*Laenge{k}*cos{k};
     6*K_X{k}*Laenge{k}*sin{k} -6*Laenge{k}*cos{k} 2*K_X{k}*(Laenge{k})^2]
 
K_BA{k}=[-(12*K_X{k}*K_Z{k}*(sin{k})^2) (12*K_X{k}-K_Z{k})*cos{k}*sin{k} 6*K_X{k}*Laenge{k}*sin{k};
    (12*K_X{k}-K_Z{k})*cos{k}*sin{k} 12*K_X{k}*(cos{k})^2+K_Z{k}*(sin{k})^2 -6*K_X{k}*Laenge{k}*cos{k};
     -6*K_X{k}*Laenge{k}*sin{k} 6*Laenge{k}*cos{k} 2*K_X{k}*(Laenge{k})^2]

K_BB{k}=[12*K_X{k}*K_Z{k}*(sin{k})^2 -(12*K_X{k}-K_Z{k})*cos{k}*sin{k} 6*K_X{k}*Laenge{k}*sin{k};
    -(12*K_X{k}-K_Z{k})*cos{k}*sin{k} 12*K_X{k}*(cos{k})^2+K_Z{k}*(sin{k})^2 -6*K_X{k}*Laenge{k}*cos{k};
    6*K_X{k}*Laenge{k}*sin{k} -6*Laenge{k}*cos{k} 4*K_X{k}*(Laenge{k})^2]

end

 
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: 05.02.2015, 15:12     Titel:
  Antworten mit Zitat      
Zitat:
Wenn ich alles so (Copy-paste) fortführe werden mir Matrizen als Zeilen (mit Leerzeichen, anstatt eine neue Zeile auszuführen) ausgegeben.
versteh ich nicht. welche matrix meinst du?
und warum initialisiert du k_bb mit 3x3 elementen wenn du nur 3 elemente davon benutzt?
Zitat:
e Funktion von cell und numel habe ich zwar nachgelesen, aber nicht wirklich verstanden.
was hast du nicht verstanden?`das warum oder was das macht ?
das warum: zur präallokation des speichers. hier nicht wirklich notwendig aber sollte man sich angewöhnen wenn man mit schleifen arbeitet.
_________________

richtig Fragen
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: 05.02.2015, 15:28     Titel:
  Antworten mit Zitat      
Hallo Berti10,

"sin" und "cos" sind Funktionen in Matlab. Sie als Namen von Variablen zu verwenden, ist mindestens verwirrend.
Die Nutzung von Cells erscheint hier unnötig. Numerische Arrays wären hier effizienter und viel übersichtlicher.

CELL erstellt ein Cell-Array ohne die Inhalte zu belegen. Ein CELL kann im Gegensatz zu einem numerischen Array nicht nur Skalare als Elemente haben, sondern beliebige andere Arrays, z.B. numerische Arrays verschiedener Größe oder auch verschiedenen Typs.

NUMEL gibt die Gesamt-Anzahl der Elemente in einem Array zurück.

Dein Code sind heftig unlesbar aus. Ich wäre nicht in der Lage darin einen Bug zu finden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 05.02.2015, 16:10     Titel:
  Antworten mit Zitat      
Danke euch beiden!

Nun K_AA, K_AB, K_BA und K_BB sind 3x3 Matrizen; bzw. Untermatrizen, die nachher zusammengefügt werden sollen. Daher sollten sie auch so ausgegeben werden; allerdings mit den zuvor berechneten Werten besetzt. Mir wird hier aber nur ein Vektor ausgegeben, der jedoch die richtigen Werte hat. Macht es sinn, die o.g. Matrizen aus der for-schleife rauszuziehen?

Bzgl. sin und cos gebe ich dir recht; das war wirklich nicht klug gewählt (auch wenn es letztlich sin und cos Werte sind).

Zum allgemeinen Verständnis fehlt mir die Vorstellung, was ein Array ist. Kann ich mir das wie einen Platzhalter vorstellen? Ist in meinem Fall das array mit den Werten v1 bis v4 belegt?

Ich bin euch sehr dankbar für eure Hilfe und entschuldigt bitte meine möglicherweise dämlichen Fragen! Smile
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: 05.02.2015, 16:56     Titel:
  Antworten mit Zitat      
Hallo Berti10,

Diese Forum ist für Fragen da! Und alle Fragen, die Matlab betreffen, sind hier sehr willkommen.

Ein Array ist ein allgemeiner Name für eine Variable beliebigen Types und beliebiger Dimensionen. Ein Skalar ist also ein [1 x 1] Array, ein Vektior ein [M x 1] oder [1 x N] Array und eine Matrix ein [M x N] Array. Höherdimensionale Arrays können dann auch die Dimensionen [M x N x O x P ...] haben. Der Typ kann ein DOUBLE sein, oder ein anderer numerischer Typ. In Matlab können Arrays des Typs "cell" andere Arrays als Elemente enthalten. Cells werden mit den geschweiften Klammern indiziert, andere Arrays mit runden Klammern.

Das Durchlesen der "Getting Started"-Kapitel der Dokumentation klärt solche Fragen. Es ist nur wärmstens zu empfehlen :-)

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 06.02.2015, 22:21     Titel:
  Antworten mit Zitat      
Hallo Jan, vielen Dank dass ihr mir so unter die Arme greift! Es hilft mir wirklich sehr!

Ich bin leider noch nicht mit einem Matrizen/Vektoren Problem weiter! Ich hab nun die sin und cos Variablen ersetzt.

Ich müsste doch, wenn ich cell als 3x3 definiere, einer 3x3 Matrix erhalten, oder? Trotzdem werden bei mir noch die Elemente der ersten Spalte belegt. Ich bin da total ratlos. was würdest du mir empfehlen, ob den Code zum laufen zu bekommen? Wie gesagt, ich möchte, dass die allgemein gehaltenen Terme je nach zuvor definierten Werten besetzt und berechnet werden.

Beste Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Berti10
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 01.02.15
Wohnort: ---
Version: R2016a
     Beitrag Verfasst am: 06.02.2015, 23:40     Titel:
  Antworten mit Zitat      
Ich komme doch langsam voran. Mir werden nun die gesuchten Matrizen als Untermatrizen ausgegeben. Wie kann ich sie mir ganz ausgeben lassen? Wenn ich z.B. K{1} schreibe, wird mir eine Matrix mit vielen Nullen ausgegeben. die oberen linken werte der Untermatrizen stimmen. Im Workspace ist aber die Richtige Matrix als Untermatrix mit Klick auf K zu finden und wenn ich direkt Werte auswähle mit K{1}(a,b) funktioniert das auch. Nur die Ausgabe als gesamte Matrix klappt noch nicht bzw. die richtige Adressierung.

Code:

% Aufraeumen
clear all;

% Eingabedaten
%Eingabe der Koordinaten fuer jeden Knoten

v{1}=[6.75;3];
v{2}=[9.5;4];
v{3}=[3.5;7];
v{4}=[3.5;1];

%Definitionen
E=2.06e11; %Definition E-Modul in (N/m^2)
A=0.004; %Definition Querschnittsfläche in (m^2)
I=1.5e-5; %Definition Flächenträgheitsmoment in (m^4)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Balkendefinitionen:
Balken=cell(1,numel(v)-1);
Laenge=cell(1,numel(v)-1);
s=cell(1,numel(v)-1);
c=cell(1,numel(v)-1);
C=cell(1,numel(v)-1);
Lambda=cell(1,numel(v)-1);
K_X=cell(1,numel(v)-1);
K_Z=cell(1,numel(v)-1);



for k=1:numel(v)-1

    Balken{k}=[v{k},v{k+1}] ;
    Laenge{k}=sqrt((v{k+1}(1,1)-v{k}(1,1))^2+(v{k+1}(2,1)-v{k}(2,1))^2);
   
    c{k}=(v{k+1}(1,1)-v{k}(1,1))/Laenge{k};
    s{k}=(v{k+1}(2,1)-v{k}(2,1))/Laenge{k};
    C{k}=[c{k} s{k} 0;-s{k} c{k} 0;0 0 1]; %Untermatrix der Drehmatrix
    o=zeros(3,3);
    Lambda{k}=[C{k} o;o C{k}]; %Drehmatrix

K_X{k}=E*I/(Laenge{k})^3;
K_Z{k}=E*A/(Laenge{k});

A11{k}=12*K_X{k}*K_Z{k}*(s{k})^2;
A12{k}=(12*K_X{k}-K_Z{k})*c{k}*s{k};
A13{k}=6*K_X{k}*Laenge{k}*s{k};

A22{k}=12*K_X{k}*(c{k})^2+K_Z{k}*(s{k})^2;
A23{k}=6*K_X{k}*Laenge{k}*c{k};
A33{k}=4*K_X{k}*(Laenge{k})^2;

K{k}= [A11{k} A12{k} A13{k} A11{k} A12{k} A13{k};
    A12{k} A22{k} A23{k} A12{k} A22{k} A23{k};
    A13{k} A23{k} A33{k} A13{k} A23{k} A33{k};
    A11{k} A12{k} A13{k} A11{k} A12{k} A13{k};
    A12{k} A22{k} A23{k} A12{k} A22{k} A23{k};
    A13{k} A23{k} A33{k} A13{k} A23{k} A33{k}];
end

 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.