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

File läuft nicht mehr wenn Variable auf 0 gesetzt wird

 

Harald654
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.10.15
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 14.01.2017, 19:53     Titel: File läuft nicht mehr wenn Variable auf 0 gesetzt wird
  Antworten mit Zitat      
Hallo,
ich habe ein kleines Problem beim Programmieren.
Und zwar funktioniert mein Skript nicht mehr, sobald ich eine Variable (welche vorher einen Wert ungleich Null hatte) auf Null setze.

Z.B wenn ich einfach nur ein paar Variablen vergebe:
Code:
function test
close all

%% Parameter
l       = 0.002;
g       = 9.83;
Omega   = 1.0*2*pi;
u_dach  = 0;

Und nach ein oder mermaigen Ausführen eine Variable auf Null setze:
Code:
function test
close all

%% Parameter
l       = 0;
g       = 9.83;
Omega   = 1.0*2*pi;
u_dach  = 0;

Funktioniert mein Programm nicht mehr.
Im Comand Window sieht man zwar das dass Skript aufgerufen wurde
Code:

aber es wird nichts ausgeführt oder gerechnet. Auch kann ich danach z.B. keine Brakepoints mehr setzen (diese werden sofort entfernt, ebenso schon vor dem Durchlaufen gesetzte Brakepoints).
Erst durch leichte abändern einer anderen Variable funktioniert das Skript dann wieder, z.B "g":
Code:
function test
close all

%% Parameter
l       = 0;
g       = 9.45;
Omega   = 1.0*2*pi;
u_dach  = 0;


Ist das Normal bzw. wie kann ich das verhindern?

Gruß,
H.
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: 14.01.2017, 20:50     Titel: Re: File läuft nicht mehr wenn Variable auf 0 gesetzt wird
  Antworten mit Zitat      
Hallo Harald654,

Das ist eine lustige Frage! Smile
Ohne das eigentliche Programm zu sehen, kann man nicht erraten, woran das liegt. Wahrscheinlich bekommst Du irgendwo eine Endlos-Schleife oder der Code läuft länger, als Du es erwartest. Zeige doch mal den relevanten Code, damit man Dir auch einen konkreten Ratschlag geben kann.

Das "close all" schließt alle anderen Fenster. Diese "vergiss erst mal alles, was Du bisher getan hast"-Header sind zwar unter Matlab-Anfängern verblüffend weit verbreitet, für richtige Programmierarbeit aber nur bedingt sinnvoll.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.10.15
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 14.01.2017, 21:04     Titel:
  Antworten mit Zitat      
Hallo Jan S,

ja ist echt ne Blöde fragen Embarassed

Da was ich gepostet habe war schon das eigentliche Programm, wenn ich das in ein Skript packe tritt immer mein obiges Problem auf. Sad
(ich hab das Problem auch wenn ich "function" und "clear all" weg lasse)
In den Fall ist das wohl nicht normal bzw tritt bei euch nicht auf?

Gruß,
H.
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.01.2017, 04:41     Titel:
  Antworten mit Zitat      
Hallo,

Funktionen haben einen eigenen Workspace, in dem die Variablen leben.
Wenn die Funktion abgearbeitet ist, stehen nur noch die Variablen zur Verfügung, die du als Rückgabeargument zurück gibst.

Warum denn überhaupt eine Funktion? Es sieht so aus, als ob du da mit einem Skript besser dran wärst.

Grüße,
Harald
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: 15.01.2017, 14:11     Titel:
  Antworten mit Zitat      
Hallo Harald654,

Zitat:
(ich hab das Problem auch wenn ich "function" und "clear all" weg lasse)

Da ist aber gar kein "celar all", das Du weglassen könntest. Meinst Du "close all"?

Zitat:
Im Comand Window sieht man zwar das dass Skript aufgerufen wurde
Code:

aber es wird nichts ausgeführt oder gerechnet.

Ich glaube, ich komme langsam dahinter, was das Problem ist: Die Funktion wird korrekt abgearbeitet. Dabei werden die Variablen im Innern der Funktion korrekt erzeugt, aber am Ende der Funktion wieder gelöscht. Das ist der Sinn von Funktionen. Du erwartest aber, dass die Variablen auch außerhalb definiert bleiben.

Die Fehlerbeschreibung "funktioniert nicht mehr" ist also irreführend. Es passiert nur etwas anderes, als Du erwartest, aber hier sind Deine Erwartungen falsch, nicht der Code.

Suche in der Dokumenation nach den Unterschieden zwischen "Script" und "Function".

Zitat:
Da was ich gepostet habe war schon das eigentliche Programm, wenn ich das in ein Skript packe tritt immer mein obiges Problem auf. :(

Das ist sehr seltsam. Dann beschreibe doch bitte nochmal genau, was das eigentliche Problem ist.
Zitat:
Auch kann ich danach z.B. keine Brakepoints mehr setzen (diese werden sofort entfernt, ebenso schon vor dem Durchlaufen gesetzte Brakepoints).

Hast Du vielleicht per pcode eine P-Version der Funktion erstellt? Gibt es doch ein "clear all" statt des bisher gezeigten "close all"? Falls ja: Bitte poste den Original-Code.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.10.15
Wohnort: ---
Version: 2016b
     Beitrag Verfasst am: 15.01.2017, 17:59     Titel:
  Antworten mit Zitat      
Hallo Jan S,

Puhhh..... hab mein Problem endlich gefunden Idea Shocked

Da ich mehre PC verwende synchronisiere ich meine "Eigene Dateien" über Onedrive. Da dies persönliche Daten sind verschlüssel ich diese beim ablegen mittels Boxcryptor und das scheint nicht so recht mit Matlab zu harmonieren bzw. führt zu dem beschriebenen Problemen (welche wirklich teilweise konstrus sind, Variablen werden manchmal z.B. bei der Eingabe von "a = 3000" mit "a = 300" im Workspace abgelegt). Verschiebe ich die Daten/m-Files auf einen anderen Ordner auf meiner Festplatte treten die Probleme nicht mehr auf....

Da ich bisher noch nie Probleme mit der Verschlüsselung hatte (eig. bekommt Matlab die Daten ja auch unverschlüsselt übergeben) bin ich gar nicht auf die Idee gekommen das dies mein Problem sein könnte und sitz schon seit Tagen vor Matlab und wundere mich nur über dessen Verhalten...

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