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

Ausgabe von for schleife in einem matrix or vektor speichern

 

mperle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2012, 12:13     Titel: Ausgabe von for schleife in einem matrix or vektor speichern
  Antworten mit Zitat      
Hallo zusammen,
bin eine Anfängerin bei MATLAB.
Ich brauche eure Hilfe!
In einer Schleife will ich einfach eine Gleichung berechnen lassen.
Wie könnte ich alle Ergebnisse z.B. in einer Matrix od Vektore speichern??
ich versuche es natürlich wie ich es kenne! aber es spuckt mir nur das ergebnis der letzten zeile aus.
ich brauche aber die Ergebnisse als Matrix um wieder abzurufen.
[code]%da ist mein Programm:
%Ansatzfaktoren für ein 8-knotige Hexal an zu rechnen
e=[-1 -1 -1;
1 -1 -1;
1 1 -1;
-1 1 -1;
-1 -1 1;
1 -1 1;
1 1 1;
-1 1 1];

%e1=-1;
%e2=-1;
%e3=1;
syms e1;
syms e2;
syms e3;
%N=zeros(Cool;

N=[];
dN1=[];dN2=[];dN3=[];% N;1 und N;2 und N;3
count=1;
for n=1:8
en1=e(n,1);
en2=e(n,2);
en3=e(n,3);
Nn1=1/2*(1+en1*e1); Nn2=1/2*(1+en2*e2);Nn3=1/2*(1+en3*e3);%Nn1 und Nn2 und Nn3 sind eindimensionalen Ansatzfunktionen
N= Nn1*Nn2*Nn3;
N
dN1=diff(N,e1);
dN2=diff(N,e2);
dN3=diff(N,e3);
dN1(count)=dN1
dN2(count)=dN2
dN3(count)=dN3
end
count=count+1;


evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 18.10.2012, 20:25     Titel:
  Antworten mit Zitat      
Hallo,

in dem du eine Variable erstellst, die mit der Schleife wächst. Du machst es ja bei
Code:

dN3(count)=dN3
 

Dein Problem ist, dass count nicht in der Schleife hochgesetzt wird, sondern ausßerhalb der for-Schleife (das "end" schließt die Schleife). Du brauchst übrigens keine count Variable. Verwende stattdessen n, also deine Zählvariable. Übrigens denke ich, kommst du auch ohne Schleife zurecht durch Indexing.

Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
mperle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2012, 21:11     Titel:
  Antworten mit Zitat      
Hallo,
Danke erst mal wegen des Antwort.
wenn ich dich richtig verstehe, du meinst ich count weg lassen soll und stattdessen mein N und dN s mit (n) abrufen soll??
wenn ich count weg lasse, kommen keine richtige ergebnisse heraus. ich habe deswegen count dazu geshrieben und wenn ich meine code so ändere.
Code:

for n=1:8
    en1=e(n,1);
    en2=e(n,2);
    en3=e(n,3);
Nn1=1/2*(1+en1*e1); Nn2=1/2*(1+en2*e2);Nn3=1/2*(1+en3*e3);%Nn1 und Nn2 und Nn3 sind eindimensionalen Ansatzfunktionen
N= Nn1*Nn2*Nn3;
dN1=diff(N,e1);
dN2=diff(N,e2);
dN3=diff(N,e3);
dN1
dN2
dN3
end

kommen 8 mal verschiedene Matrizen für N auch dN(1,2,3)raus, die von 1X2 anfängt, bis 1X8. aber immer noch keine richtige Antwort.
über anstatt for-schleife indexing habe ich es nicht genau verstanden.
 
evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 19.10.2012, 07:31     Titel:
  Antworten mit Zitat      
Hallo,

Code:

e=[-1 -1 -1;
 1 -1 -1;
 1 1 -1;
 -1 1 -1;
 -1 -1 1;
 1 -1 1;
 1 1 1;
 -1 1 1];

%e1=-1;
%e2=-1;
%e3=1;
syms e1;
syms e2;
syms e3;
%N=zeros(;

N=[];
dN1=[];dN2=[];dN3=[];% N;1 und N;2 und N;3
count=1;
for n=1:8
 en1=e(n,1);
 en2=e(n,2);
 en3=e(n,3);
Nn1=1/2*(1+en1*e1); Nn2=1/2*(1+en2*e2);Nn3=1/2*(1+en3*e3);%Nn1 und Nn2 und Nn3 sind eindimensionalen Ansatzfunktionen
N= Nn1*Nn2*Nn3;
N
dN1=diff(N,e1);
dN2=diff(N,e2);
dN3=diff(N,e3);
dN1(count)=dN1
dN2(count)=dN2
dN3(count)=dN3
end
count=count+1;
 

das ist dein Ausgangscode. Gestern habe ich das gar nicht richtig gesehen. Wenn du
Code:

dN1=diff(N,e1);
 

machst und später
Code:

dN1(count)=dN1;
 

dann wird bei jedem Durchlauf dN1 überschrieben. Dann ist es ja auch kein Wunder, wenn du keinen Vektor mit 8 Zeilen/Spalten herausbekommst.
Nochmals: Du kannst count weglassen und dafür die Zählvariable n verwenden. Dann aber auch in der Zuweisung am Ende. Des Weiteren darfst du dN1 nicht so verwalten, wie du es bisher machst. Schau dir deine Zuweisungen alle nochmal an und überleg, ob es so Sinn macht.
Über Indexing kannst du dir eigentlich viele Sachen einfacher machen, z.B. auch so manche for-Schleife ersetzen.
Code:

n=[1:1:10]';
disp(n(:,1))

for i=1:length(n)
disp(n(i,1))
end
 

Die erste disp() Anweisung und die for-Schleife leifern das gleiche Ergebnis.

Viele Grüße,
Christof.
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.