|
|
Subscript indices must either be real positive integers... |
|
A346 |
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2018, 15:22
Titel: Subscript indices must either be real positive integers...
|
|
Ich habe folgendes Problem:
Zunächst der Code:
Zur Erklärung:
data ist eine excel Tabelle, in der verschiedene Daten gespeichert sind.
Der Code läuft und macht genau das, was er soll.
Zum Problem:
Ich habe den Code in den App designer eigenfügt, da dieser ein Ergebnis liefert, welches nach drücken des Butons in einem schriftfeld angezeit werden soll.
Wenn ich alles mittel Callback eingefügt habe, und ich drücke auf run, dann kommt:
"Subscript indices must either be real positive integers or logicals."
Das Problem taucht dort auf, wo die Markierung ist.
k sind natürliche Zahlen zwischen 3 und 50, WIND_chart sind ganze Zahlen zwischen -20 und 20.
Wo kann das Problem liegen?
LG
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.04.2018, 21:42
Titel:
|
|
Hallo,
was ist denn CONF?
Wenn CONF nicht 1 oder 2 ist, ist k = 0 - und das ist am Ende natürlich problematisch.
Verwende doch mal den Debugger, um den Code durchzugehen.
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 10:13
Titel:
|
|
Hallo Harald,
CONF ist eine Eingabe, die der USER in der APP macht, die auschließlich die Werte 1 oder 2 annhemen kann. Er hat die Wahl zwischen 1 und 2 über ein Dropdown
LG
A346
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2018, 11:29
Titel:
|
|
Hallo,
bist du sicher, dass die Auswahl als Double übergeben wird und nicht etwa als String?
Bitte nutze doch den Debugger.
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 13:19
Titel:
|
|
Hallo Harald,
mir fällt ein WIND_chart kann negative Werte annehmen. Aber das muss er auch, sonst verfehlt das Programm seinen Sinn. k ist in jedem Fall größer 0.
Könnte dieser Fehler am WIND_chart liegen ?
LG
A346
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2018, 13:22
Titel:
|
|
Hallo,
die Werte von WIND_chart sind dafür vollkommen egal, es geht um die Indizes.
Nun zum dritten Mal: bitte debuggen und überprüfen, was die Werte von CONF und k sind.
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 15:06
Titel:
|
|
Hallo Harald,
die Warnung mit dem index ließ sich beheben, indem ich statt k=0; k=1; schreibe.
Jetzt kommt nur noch "index exceeds matrix dimensions ", wenn ich im App designer den "Calculate Button" drücke.
Diese Fehler erscheinen im Command Window der externen Funktion OAT.m.
Line 73 ist die line der callbackfunction im app designer.
Ich weiß nichts mit diesen Warnungen anzufangen, weil nirgends steht, auf welche stellen in meiner externen Funktion sich das bezieht.
LG
A346
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2018, 15:23
Titel:
|
|
Hallo,
Zitat: |
die Warnung mit dem index ließ sich beheben, indem ich statt k=0; k=1; schreibe. |
Also ist das Problem, dass die Cases in switch nicht zutreffen (siehe 12:29), denn sonst würde k ja sofort überschrieben und k=0 oder k=1 würde keinen Unterschied machen.
Zitat: |
Diese Fehler erscheinen im Command Window der externen Funktion OAT.m.
|
Eine Funktion hat kein Command Window.
Zitat: |
Line 73 ist die line der callbackfunction im app designer. |
Und genau dort ist dann wohl das Problem. Was Zeile 73 bei dir ist, kann ich nicht erahnen.
Wenn du den Debugger verwendest (4. Versuch), solltest du die Probleme schnell identifizieren und dann vermutlich ebenso schnell lösen können.
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 15:43
Titel:
|
|
Hallo Harald,
line 73 ist nur der Aufruf der Funktion im App designer:
Mein Verständisproblem ist folgendes:
wenn er mir sagt das Problem liegt hier in 73 ohne verweis, wo das Problem in der Funktion selber liegt, dann kann das Problem überall liegen oder ?
Wie genau funktioniert das debuggen ?
Ich dachte Debuggen ist, wenn man Breakpoint setzt und dann immer auf Run drückt und guckt, was er bisdahin macht und ob er einen Fehler ausgibt. Ist das so richtig?
Das habe ich gemacht und dann sagt er immer "not enough input arguments".
Dann rufe ich die Funktion immer mit entsprechenden Eingaben im command window auf und gucke, was rauskommt bis zu einem bestimmten Punkt. Und er macht alles, wie er es machen soll und es kommen auch keine Fehler.
Gibt es eine andere Möglicheit des Debuggens ?
LG
A346
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 15:55
Titel:
|
|
Hallo,
habe nun festgestellt, dass man bei run auch Werte für die Eingabevariablen angeben kann und dann bei run die funktion immer mit diesen Werten gespeist wird.
Das habe ich nun mit Breakpoints an allen kritischen Stellen gemacht und mir fällt nichts auf, was nicht so sein sollte
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2018, 15:56
Titel:
|
|
Hallo,
Zitat: |
wenn er mir sagt das Problem liegt hier in 73 ohne verweis, wo das Problem in der Funktion selber liegt, dann kann das Problem überall liegen oder ? |
Nein, es liegt in dieser Zeile. Im Aufruf der Funktion, nicht der Funktion an sich.
Der Teil
app.OAT(app.OAT.Value
legt nahe, dass OAT sowohl eine Funktion als auch eine Komponente in der App ist. Das ist sehr ungünstig und evtl. Ursache des Fehlers.
Zitat: |
Das habe ich gemacht und dann sagt er immer "not enough input arguments".
|
Dann verwendest du den Debugger falsch. Du setzt den Haltepunkt schon in der App??
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 16:02
Titel:
|
|
Hallo,
Zitat: |
Der Teil app.OAT(app.OAT.Value legt nahe, dass OAT sowohl eine Funktion als auch eine Komponente in der App ist. Das ist sehr ungünstig und evtl. Ursache des Fehlers.
|
Da hast du Recht, das werde ich mal versuchen.
Zitat: |
Dann verwendest du den Debugger falsch. Du setzt den Haltepunkt schon in der App??
|
Ich habe den Debugger tatsächlich nicht in der App, sondern in der Funktion verwendet. Der Grund dafür ist, dass ich an dem App code bisher nichts geändert habe, außer die Callback Funktion einzufügen und deshalb davon ausging, dass im Rest kein Fehler sein kann.
Der gesamte restliche App Code wurde automatisch generiert, indem ich die Penals und Dropdowns, etc. per Mausklick eingefügt habe.
LG
A346
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 16:16
Titel:
|
|
Hallo,
ich glaube dein Tipp, die Variable umzubenennen war sehr gut !
Jetzt ist nur noch das Problem:
"Too many output argument"
Das liegt daran, dass meine Funktion nicht nur einen Wert berechnet sondern sehr viele, ich das Ergebnis jedoch aber in nur einem Textfeld anzeigen möchte laut der Callbackfunktion.
Was nicht funktioniert ist, überall ein ; hinzusetzen. Die Funktion gibt zwar dann nur noch einen Wert aus, aber das gefällt dem App Designer trotzdem nicht.
Was ich gerne machen würde ist:
Die Funktion gibt einen Vektor mit 5 Elemten aus und diese 5 Elemente sollen in der app auf 5 verschieden Textfelder verteilt werden.
Ist das möglich ?
LG A346
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.04.2018, 16:27
Titel:
|
|
Hallo,
Zitat: |
Das liegt daran, dass meine Funktion nicht nur einen Wert berechnet sondern sehr viele, ich das Ergebnis jedoch aber in nur einem Textfeld anzeigen möchte |
In der Regel eigentlich genau umgekehrt. Du forderst mehr Rückgabeargumente zurück als die Funktion zurückgibt. Bitte gewöhne dir an, gleich den relevanten Code zu posten - hier: Funktionsaufruf und Deklarationszeile der Funktion.
Zitat: |
Was nicht funktioniert ist, überall ein ; hinzusetzen. |
Was soll das denn nun heißen?! Du meinst vermutlich an alle Zeilenenden, aber was soll das bringen?
Zitat: |
Die Funktion gibt einen Vektor mit 5 Elemten aus und diese 5 Elemente sollen in der app auf 5 verschieden Textfelder verteilt werden.
Ist das möglich ? |
Ja. Elemente extrahieren und jeweils den Textfeldern zuweisen.
Grüße,
Harald
|
|
|
A346 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 22.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.04.2018, 16:48
Titel:
|
|
Hallo Harald,
Zitat: |
Bitte gewöhne dir an, gleich den relevanten Code zu posten - hier: Funktionsaufruf und Deklarationszeile der Funktion.
|
Tut mir leid, das werde ich Zukunft beachten.
Mein Fehler war folgender:
Ich habe, wenn ich Funktionen schreibe die eckigen Klammern nach "function" immer leer gelassen. Aber die App braucht dort eine Information, sonst weiß sie nicht, was sie machen soll. Das wusste ich nicht und du konntest es mir schlecht sagen, weil ich dir keinen Code schickte
LG
A346
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|