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

Not enough input arguments

 

Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2019, 14:29     Titel:
  Antworten mit Zitat      
Zitat:

die zweite Variante ist vom Aufruf her sinnvoll. Allerdings extrahierst du in der Zeile, die die Fehlermeldung wirft, die zweite Zeile. Wenn du die Funktion so wie zuvor beschrieben aufrufst, gibt es da aber halt nur eine Zeile.

Ich kann dem nicht ganz folgen. Wie meinst du ich hätte die zweite Zeile extrahiert?

Ich habe den Code jetzt mal ohne vol_pi laufen lassen.
Code:
function [ LossVal, vol_x ] = Loss_fun( data, w_x )
 

vol_x = (mean(data.v_solution(1,:).^2));


LossVal = w_x  * vol_x;
end

 


dafür bekomme ich einen Wert raus.
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: 29.06.2019, 16:43     Titel:
  Antworten mit Zitat      
Hallo,

in genau der Programmzeile, in der die Fehlermeldung kommt.
Code:
data.v_solution(2,1:T)

Wofür steht denn für dich diese 2, wenn nicht die 2. Zeile?

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
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2019, 17:33     Titel:
  Antworten mit Zitat      
Ja, genau. Ich habe die 2 für die 2.te Zeile eingefügt.
Ich wollte Matlab damit sagen, dass sich die pi werte in der 2. Zeile befinden. Das ist also falsch. Aber wie kann ich das umändern?

[EDITED, Jan, Bitte nicht die gesamte vorhergehende Nachricht zitieren - Danke!]
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: 29.06.2019, 18:04     Titel:
  Antworten mit Zitat      
Hallo,

daran ist nichts falsch, du musst nur entsprechende Eingabeargumente übergeben, z.B.

Code:
data = struct('v_solution', [1:1000; randn(1,1000)]);


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
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2019, 17:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

Sorry für die späte Rückmeldung.
Ich habe das jetzt umgeändert und bekomme das raus:
Code:
LossVal =

   8.3459e+04


LossVal =

   8.3459e+04


vol_pi =

    0.9980


vol_x =

   3.3383e+05
 

Aber der Loss müsste 13.08 betragen. Und warum sind dort 2 LossVal?
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: 16.07.2019, 21:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aber der Loss müsste 13.08 betragen

Woher weißt du das? Ich kann dir dann nur empfehlen, die Berechnungen stückchenweise nachzuvollziehen um zu sehen, wo der Fehler liegt.

Zitat:
Und warum sind dort 2 LossVal?

Setze mit dem Debugger Haltepunkte und gehe das Schrittweise durch, dann siehst du's. Für mich ist jedenfalls nicht nachvollziehbar, was du jetzt genau gemacht hast, und damit auch nicht, wie es zu dem Ergebnis kommt.

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
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2019, 12:41     Titel:
  Antworten mit Zitat      
Hallo,
Zitat:
Woher weißt du das?


Ich habe das Model vorher schon mit Dynare programmiert.

Zitat:
Für mich ist jedenfalls nicht nachvollziehbar, was du jetzt genau gemacht hast, und damit auch nicht, wie es zu dem Ergebnis kommt


Das ist jetzt der Code, den ich eingegeben habe.
Code:

%Inputargumente

data = struct('v_solution', [1:1000; randn(1, 1000)]);  
w_pi = 0.5 ;  
w_x = 0.25;  
[ LossVal,vol_pi, vol_x ] = Loss_fun( data,w_pi, w_x )

%Loss_fun

function [ LossVal,vol_pi, vol_x ] = Loss_fun( data,w_pi, w_x)
 
vol_pi = (mean(data.v_solution(2,:).^2));
vol_x = (mean(data.v_solution(1,:).^2));



LossVal =   w_pi * vol_pi ...
          + w_x  * vol_x  

 


Der Output sieht so aus:
LossVal =

8.3459e+04


LossVal =

8.3459e+04


vol_pi =

0.9976


vol_x =

3.3383e+05
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: 17.07.2019, 14:01     Titel:
  Antworten mit Zitat      
Hallo,

sind die zu verwendenden Daten denn wirklich 1:1000 und Zufallszahlen, oder war das eher ein Platzhalter für die tatsächlichen Daten?

Ausgabe entsteht in Zeilen ohne ;. Die Anzahl der Ausgaben entspricht also genau dem, was zu erwarten ist.

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
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2019, 14:27     Titel:
  Antworten mit Zitat      
Zitat:
Ausgabe entsteht in Zeilen ohne ;


Danke, habe ich umgeändert.

Zitat:
sind die zu verwendenden Daten denn wirklich 1:1000

Also Matlab soll sich schon den Erwatungswert anhand einer Simulationslänge von 1:1000 rausziehen. Der Erwartungswert wird im Main Script berechnet. Aber wenn du so fragst, denke ich das ist eher ein Platzhalte die 1:1000 und keine Zufallsvariablen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2019, 20:12     Titel:
  Antworten mit Zitat      
Hallo,
ich habe den Code umgeändert und habe die random numbers rausgenommen.
Code:
data = struct('v_solution',[1,T;2,T]);
T=1000000;
w_pi = 0.5 ;  
w_x = 0.25;
[ LossVal,vol_pi, vol_x ] = Loss_fun( data,w_pi, w_x )


function [ LossVal,vol_pi, vol_x ] = Loss_fun( data,w_pi,w_x,T)
 
vol_pi = (mean(data.v_solution(2,:).^2));
vol_x = (mean(data.v_solution(1,:).^2));



LossVal =   w_pi * vol_pi ...
          + w_x  * vol_x;
     
end

 


Der Loss beträgt nun 3.7500e+11.

Das Model was ich nachbaue ist ein wenig anders. In dem Model wird in jeder Periode ein neuer schock (z.b Kostenschock) eingebaut, daher ist dort Loss viel größer als bei mir. Mein Code beeinhaltet nur einmal diesen Schock in einer Periode.
Ich muss jetzt eine Lösung finden, wie in jeder Periode ein neuer zufälliger Kostenschock auftritt. T habe ich scho auf 100000 erhöht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.