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

Matrizen in einer for-Schleife programmieren

 

Homer687
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.08.2010, 12:11     Titel: Matrizen in einer for-Schleife programmieren
  Antworten mit Zitat      
Hallo alle zusammen,

wie bekomme ich in einer for-Schleife folgende Matrizen kürzer programmiert:

Code:

K1 =[1  -1  0  0  0  0 ;
    -1   1  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0];
K2 =[0   0  0  0  0  0 ;
     0   1  -1 0  0  0 ;
     0  -1   1 0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0];
K3 =[0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  1 -1  0  0 ;
     0   0  -1 1  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0];
K4 =[0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  1 -1  0 ;
     0   0  0 -1  1  0 ;
     0   0  0  0  0  0];  
K5 =[0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  0  0 ;
     0   0  0  0  1 -1 ;
     0   0  0  0 -1  1];
 


Code:

M6 = zeros(6,6) ;
M6(1,1)=1       ;
     
M7 = zeros(6,6) ;
M7(2,2)=1       ;

M8 = zeros(6,6) ;
M8(3,3)=1       ;

M9 = zeros(6,6) ;
M9(4,4)=1       ;

M10 = zeros(6,6);
M10(5,5)=1      ;

M11 = zeros(6,6);
M11(6,6)=1      ;
 


Vielen Dank für Eure Hilfe Wink

Mfg...
Private Nachricht senden Benutzer-Profile anzeigen


monica
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:07     Titel:
  Antworten mit Zitat      
Hallo,
kann es sein das der Code und die Ausgabe nicht ganz zusammenpassen?
ich kann keine -1 im code erkennen, und nur jeweils eine 1 pro matrix an der stelle zB M(2,2)=1 ???
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer687
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:23     Titel:
  Antworten mit Zitat      
Es sind zwei verschieden Matrizen mit denen ich später im Programm eine Sensitivitätsmatrix ausrechne.

Dafür benötige ich die beiden genannten Matrizen, die soweit auch in Ordnung sind. Das Programm läuft auch und gibt mir die Richtigen Ergebnisse aus.
Ist es jetzt irgendwie möglich für die genannten Matrizen auch kürzer zu Programmieren.

Ich denke mal bei den verschiedenen M-Matrizen ist es bestimmt irgendwie möglich, den dieses sind alles Null-Matrizen (hier 6x6 Matrix)wobei aber in der Diagonalen jeweils eine 1 stehen muß.

Code:

M6 = zeros(6,6) ;
M6(1,1)=1       ;
     
M7 = zeros(6,6) ;
M7(2,2)=1       ;

M8 = zeros(6,6) ;
M8(3,3)=1       ;

M9 = zeros(6,6) ;
M9(4,4)=1       ;

M10 = zeros(6,6);
M10(5,5)=1      ;

M11 = zeros(6,6);
M11(6,6)=1      ;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:27     Titel:
  Antworten mit Zitat      
Hi,
das müsste es tun:

Code:

Kinit = zeros(6,6);
Kinit1 = [1  -1;-1 1];


for i = 1:5
    K.(['k' num2str(i)])= zeros(6,6);
    K.(['k' num2str(i)])(i:i+1,i:i+1)=Kinit1;
end
   


Nur so zur Info...ist das Finite Elemente Berechnung?

Gruß,

Lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:33     Titel:
  Antworten mit Zitat      
Ach und wenn du nur Matrizen brauchst die in der Diagonale einsen haben müssen gibt es das Befehl "eye":
Code:

eye(6,6)

ans =

     1     0     0     0     0     0
     0     1     0     0     0     0
     0     0     1     0     0     0
     0     0     0     1     0     0
     0     0     0     0     1     0
     0     0     0     0     0     1
 


...ist ja die Identity Matrix

Gruß,
Lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer687
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:35     Titel:
  Antworten mit Zitat      
Ich probiere Deine Code gleich mal aus.

Ja, es wird auf eine FE Berechnung (MKS-Mehrkörpersimulation) hinauslaufen. Deshalb möchte ich das Programm so kurz wie nur möglich programmieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer687
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:37     Titel:
  Antworten mit Zitat      
Die Ausgabe muss so aussehen

M6 =

1 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0


M7 =

0 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0


M8 =

0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0


M9 =

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0


M10 =

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 0


M11 =

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1
Private Nachricht senden Benutzer-Profile anzeigen
 
Homer687
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 03.08.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:45     Titel:
  Antworten mit Zitat      
Zitat:

Code:

Kinit = zeros(6,6);
Kinit1 = [1 -1;-1 1];


for i = 1:5
K.(['k' num2str(i)])= zeros(6,6);
K.(['k' num2str(i)])(i:i+1,i:i+1)=Kinit1;
end


Geht leider nicht, als Fehlermeldung bekomme ich
Undefined function or variable 'K1'.
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:46     Titel:
  Antworten mit Zitat      
in dem Fall muss du sowas schreiben:

Code:

for i =1:6
    M.(['m' num2str(i)])=zeros(6,6);
    M.(['m' num2str(i)])(i,i)=1;
   
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 04.08.2010, 13:48     Titel:
  Antworten mit Zitat      
hmmm..hast du dirket abkopiert ..bei mir funktioniert es....
da soll ja auch nirgendswo eine K1 variable definiert werden...
es sollen structures definiert werden:
K.k1
K.k2
usw....

du hast irgendwo ein Tippfehler... anders kann ich es mir nicht erklären...
der Fehler ist wahrscheinlich irgendwo vor der Schleife...
kopiere mal den Code direkt im Command Window und guck ob es da fukntioniert
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.