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

Subscript indices must be real positive integers or logical

 

ultraslan
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 01:59     Titel: Subscript indices must be real positive integers or logical
  Antworten mit Zitat      
Hallo zusammen,

ich bekomme die Fehlermeldung "
Subscript indices must either be real positive integers or logicals." wenn ich mit hilfe von Gui (denme_zumfehler.m) den prob.m aufrufe.
habe versucht es rauszufinden aber mir fällt nichts was auf..

ich habe meine Code möglichst verkürzt angehängt..

besten dank schon wenn man sich angucken könnte!

prob.m
 Beschreibung:

Download
 Dateiname:  prob.m
 Dateigröße:  237 Bytes
 Heruntergeladen:  524 mal
denme_zumfehler.m
 Beschreibung:

Download
 Dateiname:  denme_zumfehler.m
 Dateigröße:  3.28 KB
 Heruntergeladen:  546 mal
denme_zumfehler.fig
 Beschreibung:

Download
 Dateiname:  denme_zumfehler.fig
 Dateigröße:  1.75 KB
 Heruntergeladen:  501 mal
Private Nachricht senden Benutzer-Profile anzeigen


ultraslan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2014, 16:46     Titel:
  Antworten mit Zitat      
hallo nochmal,

ich glaube, das Problem liegt bei der Nutzung von
Code:
aber es sollte in dem Form bleiben..hätte jemand vielleicht einen Vorschlag?
Private Nachricht senden Benutzer-Profile anzeigen
 
SkyRazor
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 07.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 10:48     Titel:
  Antworten mit Zitat      
Hallo,

du hast recht, das Problem liegt bei evalin.
um die Fehlermeldungen zu vermeiden,sind die folgende Code für Linie plotten.
Code:

evalin('base', 'plot([EP(1:6).time],[EP(1:6).kon])');


aber ich habe deine Idee nicht sehr klar verstanden, Linie plotten oder punkte plotten, falls für punkte, dann
Code:
for i = 1:6
    evalin('base', sprintf('plot(%d,%d)', EP(i).time, EP(i).kon));
end
 



Größe,
Ming
Private Nachricht senden Benutzer-Profile anzeigen
 
ultraslan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 22:06     Titel:
  Antworten mit Zitat      
Vielen dank für deine Antwort. es ist das was ich haben wollte..

aber nur dazu hatte ich ein kleines Problem

wenn ich diese;

Code:
evalin('base', 'plot([EP(1:6).time],[EP(1:6).kon])');


als;

Code:

X = '(EP(i).time)';  
Y = '(EP(i).kon)';
 evalin('base', 'plot(',[X],',',[ Y]);
 


schreiben wollen würde, wie soll ich eigentlich im Klammen einodnen?

100dank nochmal
Private Nachricht senden Benutzer-Profile anzeigen
 
ultraslan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 22:25     Titel:
  Antworten mit Zitat      
ich habe noch eine Sache auch vergessen hinzufügen..

Code:
sollte eigentlich etwa so aussehen.
Aber so funktiniert es leider nicht

Code:

X = '(EP(i).time)';  
Y = '(EP(i).kon)';

evalin('base', 'plot(', [X],',', [Y],', Farbe(i), ''color'')');  

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.08.2014, 22:30     Titel:
  Antworten mit Zitat      
Hallo,

statt weiteren Kopfständen würde ich ja versuchen, eval(in) zu vermeiden. Man kann Daten in GUIs ja auch vernünftig verwalten:
http://www.mathworks.de/de/help/mat.....data-among-callbacks.html

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 22:36     Titel:
  Antworten mit Zitat      
Hallo Harald,


Du hast auf jeden Fall recht aber ich habe es so bekommen und sollte ich nur erweitern.

Deshalb ist der letzte Punkt wie man dies zum laufen bekommen könnte

Code:

evalin('base', 'plot(', [X],',', [Y],', Farbe(i), ''color'')');  


falls Du einen Vorschlag hättest, würde mich riesig freuen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Vorschlag:
Code:
X = '(EP(i).time)';  
Y = '(EP(i).kon)';
color = 'r';
evalin('base', ['plot(',X,',', Y,',''',color,''')'])

(alle Anführungszeichen sind einfach, aber bis zu 3 nacheinander)

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2014, 09:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort aber wenn ich dies verwende, bekomme ich wieder den gleichen Fehler "Subscript indices must either be real positive integers or logicals." Crying or Very sad Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2014, 12:04     Titel:
  Antworten mit Zitat      
Hallo,

dann mal den Debugger laufen lassen.
Was ist i im Base Workspace, wenn der Befehl ausgeführt wird?

Achtung: falls i dort nicht definiert ist, wird i als imaginäre Einheit sqrt(-1)angenommen. Das würde die Fehlermeldung erklären, und das ist ein Grund, warum ich i grundsätzlich nicht als Variable verwende.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2014, 13:20     Titel:
  Antworten mit Zitat      
Hallo Harald,

i kommt 6 raus im Workspace.

wie gesagt, die Fehlermeldung bekomme ich nur, wenn ich m. über gui mit einem einfachen Button aufrufe, sonst funktinert es einwandfrei! ich lade noch einmal hoch wie m. aussieht.

gomatlab.m
 Beschreibung:

Download
 Dateiname:  gomatlab.m
 Dateigröße:  392 Bytes
 Heruntergeladen:  490 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2014, 13:44     Titel:
  Antworten mit Zitat      
Hallo,

was steht für i im Base Workspace, wenn du den Code aus der GUI heraus ausführst?
Da EP.mat fehlt, kann ich es nicht testen, aber meine Vermutung wäre: es gibt im Base Workspace dann kein i, sondern nur im Workspace des GUI-Callbacks. Du müsstest i also jedes Mal vorher in den Base Workspace transferieren, weil dort ja der Befehl ausgewertet wird.

Ich kann nur nochmal davon abraten, so etwas überhaupt zu machen. In der Zeit, die du dich damit rumärgerst, hättest du das wahrscheinlich auf getappdata/setappdata umschreiben können, und vor allem könnte man den Code danach auch lesen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2014, 14:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

im Workspace steht als i 0.0000 + 1.0000i

Du hast auf jeden fall recht aber ich dachte immer ich bin kurz vor Ende zumlaufen kriegen Embarassed
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2014, 15:23     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
im Workspace steht als i 0.0000 + 1.0000i

Das erklärt ja die Fehlermeldung.

Abhilfe wie gesagt: "Du müsstest i also jedes Mal vorher in den Base Workspace transferieren, weil dort ja der Befehl ausgewertet wird."

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 07.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2014, 15:29     Titel:
  Antworten mit Zitat      
Danke...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.