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

Verschachtelte Schleife

 

Reeslou
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.08.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2020, 14:22     Titel: Verschachtelte Schleife
  Antworten mit Zitat      
Hallo,

ich muss eine kohortenspezifische Erwerbsquotenprojektion durchführen. Dabei ergibt sich die Fortschreibungsformel für das Jahr t+1 wie folgt:

EWQ der 16-jährigen in 2020 = EWQ der 15-jährigen in 2019 + Eintrittswahrscheinlichkeit der 15-Jährigen * (EQ_max - EWQ der 15-jährigen in 2019).

Die Eintrittswahrscheinlichkeit ist gespeichert in einer 61x1-Matrix, variiert also mit den Altersjahren, ist aber unabhängig von t (wird als konstant angenommen). Das heißt pro Spalte muss auch diese Eintrittswahrscheinlichkeit immer durchlaufen werden...EQ_max entspricht annahmegemäß 95 Prozent.
Für alle t+1, t+2, etc...
ergibt sich die Erwerbsquote z.B. in t+1 der jeweiligen Personen im Alter von x aus der Erwerbsquote der Personen im Alter von x-1 zum Zeitpunkt t.
Die Schleife muss also immer eine Spalte Zeile für Zeile anhand der Formel abarbeiten, um dann in die nächste Spalte zu springen und wieder anhand der Fortschreibungsformel abarbeiten usw usw.
Anhand der Formel wird ja deutlich, dass zur Berechnung des ersten Projektionsjahres die Daten aus dem Basisjahr (hier 2019) verwertet werden, für das zweite Projektionsjahr dann die Daten aus dem ersten Projektionsjahr (hier 2020) usw...deshalb müssen eben zuerst in jeder Spalte alle Zeilen abgearbeitet werden, bevor man in die nächste Spalte (ins nächste Projektionsjahr) springen kann...


Code:
fort_hilfe=zeros(61,61);
fort_hilfe(:,1)=av_EQ_fem_2019;
%mein Basisjahr ist 2019, d.h. die erste Spalte (Basisjahr 2019=t) fülle ich mit den durchschnittlichen Erwerbsquoten (für alle Altersjahre 15-75).



Wenn ich das jetzt pro Spalte machen will, sieht das wie folgt aus (und funktioniert auch)...ich muss das aber eben als Schleife haben und bekomme, egal was ich versuche, entweder Dimensionsfehler oder falsche Ergebnisse...

Code:
fort_hilfe(2:J,2)=fort_hilfe(1:J-1,1)+entry_fem(1:60).*(95-fort_hilfe(1:J-1,1));
fort_hilfe(3:J,3)=fort_hilfe(2:J-1,2)+entry_fem(2:60).*(95-fort_hilfe(2:J-1,2));

[usw.]

War das halbwegs verständlich?
Ich wäre dankbar um jede Hilfe..
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.09.2020, 14:37     Titel:
  Antworten mit Zitat      
Hallo,

wie ist J definiert?

Wie soll die letzte Iteration aussehen?

Zitat:
egal was ich versuche, entweder Dimensionsfehler oder falsche Ergebnisse...

Wenn du deine Ansätze mitsamt der jeweiligen Probleme postest, ersparst du uns das Herumprobieren. Wink

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Reeslou
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.08.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2020, 14:46     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

wie ist J definiert?

Wie soll die letzte Iteration aussehen?

Zitat:
egal was ich versuche, entweder Dimensionsfehler oder falsche Ergebnisse...

Wenn du deine Ansätze mitsamt der jeweiligen Probleme postest, ersparst du uns das Herumprobieren. Wink

Grüße,
Harald



Hallo Harald,
bitte entschuldige..
J ist definiert als die Altersjahre von 15-75, d.h. J=61
Die letzte Iteration soll für das Projektionsjahr 2070 sein. Oder was meinst du?

Einer der Versuche war z.B der hier:
Code:
T=61;
J=61;
Matrix_Test=zeros(61,61);
for T=1
    J=1;
    Matrix_Test(:,1)=av_EQ_fem_2019;
   
end

T=61;
J=61;
for loop=2:T
    loop2=2:J
    Matrix_Test(loop2,loop)=Matrix_Test(loop2-1,loop-1)+entry_fem(1:60,1).*(95-Matrix_Test(loop2-1,loop-1));
end


T sind in diesem Falle die Projektionsjahre. Allerdings müsst eich für entry_fem ja auch noch einen Index einführen?!

Sowas wie:
Code:
VOR die for-Schleife zum initialisieren und dann IN die for-Schleife
Code:
m=1:61
         m=m+1


Ich bin noch total neu mit Matlab und habe soviel romprobiert, dass ich erstens total verwirrt bin und zweitens die Hälfte meiner Versuche nicht mehr nachvollziehen kann Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.09.2020, 15:14     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Die letzte Iteration soll für das Projektionsjahr 2070 sein.

Die Information hilft mir wenig. Gemeint war, wo das Muster nach [usw.] beendet werden soll.

Die Schleifenvariable ist generell ein einziger Wert und typischerweise der, der sich verändert. Wenn nur ein Wert variiert werden soll und die anderen sich direkt daraus ableiten (z.B. durch +1 oder -1), dann brauchst du auch nur eine Schleife. Hier z.B.:

Code:
for k = 1:J-1 % bei "J-1" bin ich mir nicht sicher
%fort_hilfe(2:J,2)=fort_hilfe(1:J-1,1)+entry_fem(1:60).*(95-fort_hilfe(1:J-1,1));
%fort_hilfe(3:J,3)=fort_hilfe(2:J-1,2)+entry_fem(2:60).*(95-fort_hilfe(2:J-1,2));
fort_hilfe(k+1:J,k+1)=fort_hilfe(k:J-1,k)+entry_fem(k:60).*(95-fort_hilfe(k:J-1,k));
end


Zitat:
Ich bin noch total neu mit Matlab

Dann mal das MATLAB Onramp durcharbeiten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.