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

Fehler beim Plotten von Daten in neueren Matlab Versionen

 

gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 19:32     Titel:
  Antworten mit Zitat      
Hmm...es taucht noch drei weitere Mal in meinem Skript auf:

Code:
fitparams = handles.fitfunctions{fitfunction_index}.param_vector;
ub_vector(i) = handles.fitfunctions{fitfunction_index}.param_vector(i);
lb_vector(i) = handles.fitfunctions{fitfunction_index}.param_vector(i);


Ich hab den rechten Ausdruck einfach durch a ersetzt.
Daraufhin meckert aber Matlab sinnvollerweise, weil a nicht als Variable oder Funktion definiert ist. Hab dann a als a=[] definiert.
Meckert aber weiter:

??? Attempted to access a(1); index out of bounds because numel(a)=0.

Error in ==> Frontend>do_fit at 720
ub_vector(i) = a(i);



Eine Idee?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2013, 21:09     Titel:
  Antworten mit Zitat      
Hallo,

da kann ich ohne den Kontext schwer weiterhelfen. Vermutlich wird das ganze ja noch in einer Schleife oder so verwendet, denn sonst bräuchte man das {fitfunction_index} nicht.

Versuchen wir's mal so:
Schau mal, ob der Aufruf so in Zeile 749 funktioniert:
Code:
[fitfunctions{fitfunction_index}.param_vector, handles.data_fit, exitflag, output] = ...


Falls ja, das immer so ersetzen.
In (Callback-)Funktionen, in denen fitfunctions zugewiesen/verändert wird (links vom Gleichheitszeichens), setze am Ende der Funktion
Code:
setappdata(handles.figure1, 'fitdata', fitfunctions)

In (Callback-)Funktionen, in denen fitfunctions abgefragt wird (rechts vom Gleichheitszeichen), setze am Anfang der Funktion
Code:
fitfunctions = getappdata(handles.figure1, 'fitdata');


Sollte handles.figure1 nicht erkannt werden, öffne das zugehörige .fig (Rechtsklick --> Open in GUIDE), doppelklicke ins Leere, und schaue was die Eigenschaft "tag" für einen Wert hat --- dann musst du das statt figure1 verwenden.

Zur generellen Verwendung von setappdata/getappdata siehe
http://www.mathworks.com/help/matla.....-data-in-a-guide-gui.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 03:02     Titel:
  Antworten mit Zitat      
??? Illegal right hand side in assignment. Too many elements.
Hallo,

wenn ich den Aufruf in besagter Zeile durch
Code:
[fitfunctions{fitfunction_index}.param_vector, handles.data_fit, exitflag, output] = ...
ersetzte, kommt die alte Fehlerkette:


Error in ==> Frontend>do_fit at 759
[fitfunctions{fitfunction_index}.param_vector, handles.data_fit, exitflag, output] = ...

Error in ==> Frontend>fit_button_Callback at 673
do_fit(hObject, handles);

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> Frontend at 42
gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback


Ist schon komisch...
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 03:04     Titel:
  Antworten mit Zitat      
Sry, so sollte es richtig sein:

??? Illegal right hand side in assignment. Too many elements.

Error in ==> Frontend>do_fit at 759
[fitfunctions{fitfunction_index}.param_vector, handles.data_fit, exitflag, output] = ...

Error in ==> Frontend>fit_button_Callback at 673
do_fit(hObject, handles);

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> Frontend at 42
gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2013, 11:02     Titel:
  Antworten mit Zitat      
Hallo,

das sieht mir sehr komisch aus. Bist du ganz sicher, dass die GUI mit demselben Ablauf vorher funktioniert hat?

Setze bitte einen Haltepunkt in Zeile 749, lasse
Code:
a = handles.fitfunctions

laufen, speichere die Variablen a und fitfunction_index in einer .mat-Datei ab, und hänge sie hier an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 16:48     Titel:
  Antworten mit Zitat      
Hi,

ja, als ich nur das erste Output-Argument durch "a" ersetzt habe, wurde was gefittet (ohne Fehlermeldung!). Bei allen anderen Ersetzungen/Änderungen sind Fehler aufgetreten.
Ich werde das morgen auch mal mit der R2012b-Versionen probieren. Vielleicht ist da ja wieder etwas ganz anders...

Ich habe jetzt mal den Haltepunkt gesetzt und davor in der Zeile
Code:
a=handles.fitfunctions;
save daten a fitfunction_index;  

definiert. Ansonsten ist alles so wie es anfangs auch war.


vg
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 16:51     Titel:
  Antworten mit Zitat      
Hier noch die .mat-Datei.

daten.zip
 Beschreibung:

Download
 Dateiname:  daten.zip
 Dateigröße:  10.17 KB
 Heruntergeladen:  318 mal
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2013, 14:22     Titel:
  Antworten mit Zitat      
Hallo,

also in R2012b läuft alles genau so ab, wie in 2009. Nur wenn ich " handles.fitfunctions{fitfunction_index}.param_vector" durch "a" in Zeile 749 ersetze (und nur da!), dann fittet er. Ansonsten nicht.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2013, 21:07     Titel:
  Antworten mit Zitat      
Hallo,

ich hätte mich klarer ausdrücken sollen:
Bist du ganz sicher, dass die GUI mit demselben Ablauf in Release 2006 funktioniert hat? Es wäre ja zumindest möglich, dass die GUI im alten Release zwar für andere Abläufe funktioniert, aber nicht für genau diesen.

Ansonsten muss ich sagen, dass ich für das Problem zumindest gegenwärtig keine Erklärung habe.

Ein Versuch noch:
setze den Haltepunkt in der Zeile. Gehe dann auf "continue". Kommt die Fehlermeldung sofort, oder springt MATLAB erst nochmal "normal" in diese Zeile? Falls letzteres:
bitte dieselbe Vorgehensweise mit der .mat-Datei nochmal, aber nicht den Haltepunkt manuell setzen, sondern
Code:

Dann wrüde die Zeile nämlich mehrfach durchlaufen, und der Fehler tritt erst in einer späteren Iteration auf - und es ist natürlich interessant, sich den Stand vor dieser späteren Iteration anzusehen.

Im übrigen sehe ich nur die Möglichkeit, sich mit einer Ersetzung zu behelfen, die aber natürlich dann auch in den anderen Teilen der GUI durchgeführt werden muss, damit diese Teile weiterhin funktionieren.
Oder natürlich: die GUI sowie den Ablauf und sämtliche benötigten Daten zur Verfügung stellen, damit man sich selbst ein Bild machen kann. Sollte das hier in der "Öffentlichkeit" nicht möglich sein, kann man sich ja an den Technischen Support von MathWorks wenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 00:40     Titel:
  Antworten mit Zitat      
Hallo,

präzisiere bitte "mit demselben Ablauf"?
Es ist der gleiche Code, und wenn ich auf "Run" klicke, dann öffnet sich meine GUI, wo ich dann meine Daten einlesen und fitten kann. Oder meinst du, dass andere Fehler auftauchen müssten (auch wenn die Daten gefittet werden können)???

Zu deinem Vorschlag:
Die Fehlermeldung kommt sofort, d.h. Matlab springt nicht in die Zeile.

Ja, mit der Ersetzung hast du recht. Wenn, dann muss man das eigentlich überball machen. Wirklich komisch, dass das "soweit funktioniert", wenn ich das nur in der betreffenden Zeile ersetze.

vg
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.11.2013, 10:20     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
präzisiere bitte "mit demselben Ablauf"?

Es werden die selben GUI-Elemente in der selben Reihenfolge betätigt, und die verwendeten Daten sind auch gleich. Also eben alles außer der verwendeten MATLAB-Version.

Zitat:
Wirklich komisch, dass das "soweit funktioniert", wenn ich das nur in der betreffenden Zeile ersetze.

Vermutlich verwendest du einfach nur nicht die Funktionalität, mit der die anderen Zeilen aufgerufen werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast123
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 05.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2013, 10:58     Titel:
  Antworten mit Zitat      
Hallo,

ja, die Daten sind gleich! Ich verwende auch die selben Elemente in der GUI.
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.