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

error too many input arguments

 

Glückspilz
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2014, 16:54     Titel: error too many input arguments
  Antworten mit Zitat      
Hallo,

ich habe eine Funktion "Simulation", innerhalb derer eine weitere Funktion aufgerufen wird. Leider bekomme ich immer den Fehler "too many input arguments", der von der Funktion arFitLHSrandn kommt. Ich habe es ausprobiert, wenn ich in arFitLHSrandn den Übergabeparameter n lösche, bekomme ich den Fehler beim Aufruf dieser Funktion nicht mehr. Rufe ich dann aber die Funktion "Simulation" auf, kommt der Fehler "too many output arguments" und als Fehlerquelle ist wieder die Zeile mit der arFitLHSrandn Funktion angegeben. Ich sitzte jetzt schon seit Stunden daran, aber komme nicht weiter. Kann mir irgendjemand helfen?

Würde mich sehr freuen! Vielen Dank Smile

Hier meine Funktionen:

Code:
function [x,bool_lhs] = arFitLHSrandn(sampling_strategy,n) % (n, ~, log_fit_history, backup_save, use_cluster, sampling_strategy)
   
global ar

if(~exist('n','var') || isemtpy(n))
    n = 100;
end
if(~exist('log_fit_history','var'))
    log_fit_history = false;
end
if(~exist('backup_save','var'))
    backup_save = false;
end
if(~exist('use_cluster','var'))
    use_cluster = false;
end
if(~exist('tresh','var'))
    thresh = 1e-4;
end

ps = ones(n,1) * ar.p;
n % #ok<NOPRT>
q_select = ar.qFit==1;
switch lower(sampling_strategy)
    case 'lhs'
        psrand = lhsdesign(n,sum(q_select));
        bool_lhs = ones(n,1);
    case 'randn'
        psrand = randn(n,sum(q_select));
        bool_lhs = zeros(n,1);
    otherwise
        sampling_strategy  % #ok<NOPRT>
        error('sampling strategy unknown.')        
end

psrand = psrand .* (ones(n,1)*(ar.ub(q_select) - ar.lb(q_select)));
psrand = psrand + (ones(n,1)*ar.lb(q_select));

ps(:,q_select) = psrand;

if(~use_cluster)
    arFits(ps, log_fit_history, backup_save);
else
    arFitsCluster(ps, log_fit_history);
end
   
   
 x = ar.chi2s;
 mini = minima(x, thresh);  % #ok<NASGU>
[chi2] = ar.chi2fit % #ok<NASGU,NOPRT>
   
 

% [bestchi2] = min(ar.chi2s) % #ok<NOPRT>


end

 



und die zweite:

Code:
clear all
load arAll
global ar

for i=1:length(arAll)
    ar = arAll{i};
    cd(pfade{i})
   
   
    [chi2s_randn,bool_randn] = arFitLHSrandn('randn',1000);
    [chi2s_lhs,bool_lhs] = arFitLHSrandn('lhs',1000);
   
    chi2s = [chi2s_randn';chi2s_lhs'];
    bools_lhs = [bool_randn;bool_lhs];
    % bools_m = [bool_m1;bool_m2;bool_m3];
    con = chi2s2con(chi2s);
   
end

X = [bools_lhs,bools_m];
result = logreg(con,X);




edit by denny: Bitte die Codeumgebung verwenden. Eine Schaltfläche mit dem Namen "Code" über dem Editorfenster
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.11.2014, 14:30     Titel:
  Antworten mit Zitat      
Hallo

wenn ich dein Code betrachte, dann hast du ja die Anzahl definierter Parameter von der Funktion arFitLHSrandn verändert. also von 6 auf 2.

Scheinbar hast du noch irgend wo eine Stelle vergessen anzupassen, wo noch 6 Parameter statt 2 übergeben werden. Also muss du diese Stelle suchen. In dem Code was du gepostet hast, sehe ich diese Stelle nicht.

Aber in der Fehlermeldung sollte ja genau stehen, welche Zeile den verursacht hat.
Schaue genauer hin, durch anklicken, der in Klammern stehen Zeilennummer, kannst direkt zu der Stelle gesprungen werden. Wenn du mit der Fehlermeldung nicht klar kommst, dann bitte diese Meldung hier komplett posten.


Apropos Fehler, ich haben noch einen entdeckt, du hast die Funktion ISEMPTY falsh geschrieben:
Zitat:

Undefined function 'isemtpy' for input arguments of type 'double'.

Error in arFitLHSrandn (line 5)
if(~exist('n','var') || isemtpy(n))




Richtig wäre:

Code:

if(~exist('n','var') || isempty(n))
    n = 100;
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Glückspilz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2014, 16:14     Titel:
  Antworten mit Zitat      
Hey Denny,

danke für deine Tipps. Hab den code nochmal durchgeschaut, aber es ist mir immer noch nicht so ganz klar, wo der Fehler liegt. Die Meldung ist:

Code:
Error using arFitLHSrandn
Too many input arguments.

Error in Simulation (line 10)
    [chi2s_randn,bool_randn] = arFitLHSrandn('randn',1000);


Ich hatte die Inputargumente anfangs auf zwei reduziert, weil ich früher einen Fehler hatte, es wären zu viele Argumente. Mit zweien ging es bisher ganz gut, erst jetzt, wo ich die arFitLHSrandn-Fkt. unter "Simulation" aufrufe, geht es nicht mehr.
Danke auch für deinen zweiten Tipp mit dem Rechtschreibfehler Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Glückspilz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2014, 16:49     Titel:
  Antworten mit Zitat      
Okay, das mit den Inputargumenten habe ich jetzt hinbekommen, lag irgendwie am Verzeichnis....Jetzt läuft die Simulation soweit auch, allerdings bekomme ich ganz am Ende nach 10min modellieren folgenden Fehler:

Code:
Error using arFitLHSrandn
Too many output arguments.

Error in Simulation (line 10)
    [chi2s_randn,bool_randn] = arFitLHSrandn('randn',100);
 


Woran kann das liegen? Das Verzeichnis stimmt jetzt.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.11.2014, 18:44     Titel:
  Antworten mit Zitat      
Hallo

schaue dir diese Situation mit Debugger genauer an.
ab 2012b:
Im Tab EDITOR, das Menu Breakpoints -> Stop on Errors aktivieren

vor 2012b:
Menu Debug-- Stop if Errors/Warnings...
Dann Always stop if error

oder in Command Window das eingeben
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Glückspilz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2014, 12:36     Titel:
  Antworten mit Zitat      
Danke, habs nach langem Suchen gefixt bekommen, auch wenn mir immer noch nicht gan klar ist, wo der Fehler lag....
Aber Hauptsache, es läuft jetzt Smile
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.