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

Variable Schnittpunkte berechnen und plotten

 

LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2016, 20:29     Titel:
  Antworten mit Zitat      
Hi Jan,
danke dir vorab für deine Mühe.

Also ich habe mal versucht deine Verbesserungen einzuarbeiten:
Code:
>> f1
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\elfun\@double\tan)     % double method
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\elfun\@single\tan)     % Shadowed single method
C:\Program Files\MATLAB\R2016a\toolbox\distcomp\parallel\@codistributed\tan.m  % Shadowed codistributed method
C:\Program Files\MATLAB\R2016a\toolbox\distcomp\gpu\@gpuArray\tan.m            % Shadowed gpuArray method
C:\Program Files\MATLAB\R2016a\toolbox\symbolic\symbolic\@sym\tan.m            % Shadowed sym method
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\elfun\@double\sqrt)     % double method
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\elfun\@single\sqrt)     % Shadowed single method
C:\Program Files\MATLAB\R2016a\toolbox\distcomp\parallel\@codistributed\sqrt.m  % Shadowed codistributed method
C:\Program Files\MATLAB\R2016a\toolbox\distcomp\gpu\@gpuArray\sqrt.m            % Shadowed gpuArray method
C:\Program Files\MATLAB\R2016a\toolbox\symbolic\symbolic\@sym\sqrt.m            % Shadowed sym method
Not enough input arguments.

Error in f1 (line 6)
y = (12/(1+tan(x).^2))+ sqrt((12/(1+tan(x).^2).^2) - (108/(1+tan(x).^2)));


So sieht die Fehlermeldung nun aus.
Ich hab mal versucht zu beginn x mit einem 0-array zu definieren, also :
Code:

Wenn ich dann, den Code ausführe, rechnet der eine Zeit lang und gibt mir am Ende die Fehlermeldung "Out of memory" zurück...
Hoffe konnte es veranschaulichen.
Grüße LeCon
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.11.2016, 13:05     Titel:
  Antworten mit Zitat      
Hallo LeConstructor,

Dann scheint es also "x" zu sein: Hast Du ein M-File "x.m" erstellt? Und dann f1 aufgerufen ohne Inputs?
Nein, das passt auch nicht. Irgendetwas läuft da sehr merkwürdig. Jedenfalls ist klar, dass diese Zeile eine Funktion aufruft, die mehr Inputs erwartet, als geliefert werden. Mit dem Debugger ist das sehr leicht heraus zu finden, aber in einer Forums-Diskussion ist das sehr zäh. Stoppe doch noch mal in dieser Zeile und gib die einzelnen Terme von Hand im Command Window ein. Dann findest Du so schnelle heraus, wo es hängt, dass mir hier die Finger nervös kribbeln.

Zitat:
Ich hab mal versucht zu beginn x mit einem 0-array zu definieren, also :
Code:

Das ist das gleiche wie "x = []".

In welcher Zeile bekommst Du nun den Out-of-Memory Fehler?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LeConstructor
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2016, 16:16     Titel:
  Antworten mit Zitat      
Hi Jan,
ich hab jetzt den Code wirklich einzeln durchlaufen lassen und es tritt in jedem Term mit x auf.
Ich hab jetzt den input für tan(x) als Radiant eingegeben, aber das hat auch nicht geholfen.
Wenn ich die Funktion in die for-Schleife einsetze, läuft das Script durch bis wieder der Fehler "Out of Memory" kommt.
Hänge das mal an.

matlab.PNG
 Beschreibung:

Download
 Dateiname:  matlab.PNG
 Dateigröße:  125.05 KB
 Heruntergeladen:  348 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.11.2016, 23:35     Titel:
  Antworten mit Zitat      
Hallo LeConstructor,

Nochmal: Du hast ofenbar irgendwo ein File namens "x.m" erzeugt.
Zudem rufst Du die Funtion ohne den erforderlichen Input "x" auf:
Code:

Richtig müsste es heißen:
Code:
f1(x)   % mit entsprechendem x

denn die Funktion ist doch so definiert:
Code:


Hier gibt es also 2 Probleme:
1. Du hast den Input x vergessen.
2. Matlab verwendet stattdessen die Funktion "x.m" und moniert, dass dort ein Input erwartet wird.

Ich habe Dir schon gezeigt, wie man nach Funktionen sucht. Benutze das auch, um heruaszufinden, wo das "x" definiert ist: which x -all

Oder liegt es daran, dass Du Code postest, der nicht zur Fehlermeldung passt, weil Du schon darin editiert hast? Ist es eigentlich der "f1" Aufruf, der den fehlenden Input erzeugt?

Zitat:
Ich hab jetzt den input für tan(x) als Radiant eingegeben, aber das hat auch nicht geholfen.

Das hat ja nun auch wirklich gar nichts mit dem Problem zu tun.
Raten bringt einen nicht effizient weiter.

Zitat:
Wenn ich die Funktion in die for-Schleife einsetze, läuft das Script durch bis wieder der Fehler "Out of Memory" kommt.

Das ist nur eine vage erklärung dessen, was Du tust. Bitte poste lieber den Code, damit die Leser es nachvollziehen können.
Bitte hänge Fehlermeldungen per Copy&Paste an, da Screenshots für Text eher ungeeignet sind. Aber man kann diesem Screenshot zumindest ansehen, dass es kein "Out of memory"-Fehler ist, sondern ein Erreichen des Rekursions-Limits.
Die Funktion f1 ruft sich recursive selbst auf in (jetzt wäre es schön die Code-Zeile per Copy&Paste zu zeigen, aber wegen des Screenshots ist das umständlich) mit dem fzero Befehl.

Auch hier kannst und solltest Du wieder der Debugger verwenden, um selbstständig herauszufinden, welche Funktion wo rekrusiv aufgerufen wird.

Die Diskussion ist ungewöhnlich für ein eigentlich so konkretes Problem. Mit der eigentlichen Frage vom 08.11.2016, 11:03 hat das kaum noch etwas zu tun.
Der Editor zeigt Dir bereits an, dass beim Input "x" ein Problem vorliegt. Es ist gut, diese Warnmeldungen zu beachten.
Die beiden "which"-Zeilen haben im Code nichts mehr verloren. Sie dienten doch nur dazu herauszufinden, welcher Befehl die Fehlermeldung erzeugt. Aber jetzt erzeugen sie nur Müll auf dem Bildschirm.

Gruß, Jan
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 - 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.