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

Variablenstruktur während dem Programmieren anzeigen

 

einfachrolf
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 14:26     Titel: Variablenstruktur während dem Programmieren anzeigen
  Antworten mit Zitat      
Ich speichere meine Variablen alle in dem Struct-Array handles.

Jedoch verliere ich oft den Überblick über die Struktur meiner Variablen. Um diese einzusehen, muss ich das Programm starten und während dem Debugging irgendwo mit einem Breakpoint unterbrechen. Das ist teilweise sehr lästig.

Ist es möglich, mir während der Programmierung (am besten ohne Unterbrechung des Programms durch Breakpoints beim Debuggen) die Struktur der Variablen anzuzeigen?

Idealerweise würde ich gerne den Namen meiner Struct-Variablen eintippen im Script und sofort angezeigt bekommen, welche Variablen in dieser enthalten sind.

Zuletzt bearbeitet von einfachrolf am 03.10.2014, 15:04, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 03.10.2014, 14:36     Titel:
  Antworten mit Zitat      
Wird ein Ausdruck oder Aufruf einer Variablen nicht mit einem Semikolon abgeschlossen, wird sie an der Stelle im Code dann auch im Command window ausgegeben.

Code:

structName = struct('feld',1,...);
structName.feld % gibt die Variable des structs im command window aus
% oder die komplette struct
structName
 


Der Sinn deiner Vorgehensweise ergibt sich mir aber noch nicht. Warum muss das Programm unbedingt weiterlaufen, anstatt es z.B. mit dem Debugger und breakpoints an einer gewünschten Stelle anzuhalten?
Private Nachricht senden Benutzer-Profile anzeigen
 
einfachrolf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 15:07     Titel:
  Antworten mit Zitat      
@DSP:


ich meine natürlich, dass ich es lästig finde das Programm ständig während dem Debugging mit Breakpoints zu unterbrechen. ( Für mich ist das ein Unterbrechen des Programmes während der Laufzeit. Wie siehst du das? ).

Ich habe es aber in meiner Frage zum besseren Verständnis angepasst.


Deine Lösung hilft mir nicht wirklich, da meine Variablen nur beim Unterbrechen (Im Debug) existieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 03.10.2014, 15:17     Titel:
  Antworten mit Zitat      
einfachrolf hat Folgendes geschrieben:
Deine Lösung hilft mir nicht wirklich, da meine Variablen nur beim Unterbrechen (Im Debug) existieren.


Das bezweifel ich doch ganz stark. Eine Variable existiert innerhalb ihrer Funktion oder wenn du sie "global" im GUI handles abspeicherst zur kompletten Laufzeit nach der Variablen-Initialiserung bzw. Wertzuweisung, egal ob du nun den Debugger benutzt oder nicht.

Schreibe ich irgendwo im code z.B. einfach nur handles wird auf jedenfall der handles struct der GUI in seinem momentanen "Zustand" im Command window ausgegeben, sprich alle Felder und deren Wert/Datentyp und Dimensionen bei Array.

Ansonsten mal bitte genauer beschreiben wie du dir die Ausgabe vorstellst.
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex4456
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 17.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 15:48     Titel:
  Antworten mit Zitat      
Also so wie ich es verstehe

hat er halt im code iwie stehen strukt.var1, strukt.var2 usw., nur überall im Code verteilt. Und da er sich jetzt nicht 30 variablen Namen merken kann würde er gerne z.b. im Editor mit der Maus über strukt. gehen und dann alle möglichen var-Namen sehen.

Ansonsten kann man das ja nur machen indem man das Skript starten (bei GUI dann in funktionen stoppen) und dann kann man sich die Variablen im Workspace angucken.

Habe leider nur keine Antwort auf deine Frage, würde mich selber total interessieren.
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: 03.10.2014, 17:48     Titel: Re: Variablenstruktur während dem Programmieren anzeigen
  Antworten mit Zitat      
Hallo einfachrolf,

Zitat:
Ist es möglich, mir während der Programmierung (am besten ohne Unterbrechung des Programms durch Breakpoints beim Debuggen) die Struktur der Variablen anzuzeigen?

Das ist schon aus theoretischen Gründen nicht möglich. Beispiel:
Code:
if rand > 0.5
  S.a = 1;
else
  S.b = 1
end
S  % ???

Jetzt ist es unmöglich den Editor automagisch raten zu lassen, welche Felder S hat. Das hängt einfach vom Programm-Ablauf ab. Gut, Du könntest natürlich versprechen, dass Du solche Tricks nicht machst, sondern stattdessen nur bestimmte Felder definierst. Aber dann ist das Problem ja auch schon erledigt!

Bei größeren Programmen, z.B. mit 100'000 Zeilen, ist genau das ein ernstes Problem. Dann benötigt man eine Strategie zum sauberen Programmieren um solche Probleme zu verhindern. So könnte man z.B. objekt-orientierte Programmierung benutzen oder die Felder eines Struct nur in einer bestimmten Funktion erzeugen lassen, so dass man sicher sein kann, dass nicht irgendwo im Programm irgendetwas erzeugt wird.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 09.10.2014, 13:52, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
einfachrolf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 19:21     Titel: Vielen Dank
  Antworten mit Zitat      
Vielen Dank für eure Unterstützung. Ich schätze, dass sich das leider nicht so wie erwünscht realisieren lässt.


Ist es denn allgemein möglich Variablen in Matlab autovollständigen zu lassen.?


Beispiel

Code:

variable_a = 5;
variable_b = 3;

% wenn ich nun hier innerhalb desselben scriptes weiterschreibe in denen ich die Variablen definiert habe, soll Matlab mir nach der Eingabe von "[i]var[/i]" im Quelltext schon die beiden initialisierten Variablen anzeigen, so dass ich per Maus oder Pfeiltasten und Leertasten direkt die Variablen auswählen kann ohne selbst vollständig einzutippen.

 
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: 03.10.2014, 21:57     Titel:
  Antworten mit Zitat      
Hallo,

damit das klappt, müssen die Variablen momentan im Workspace existieren.
Wenn du also bestimmte Variablen vervollständigen willst, dann lege sie im (Base) Workspace an, und du kannst sie im Editor auch verwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2014, 13:27     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

damit das klappt, müssen die Variablen momentan im Workspace existieren.
Wenn du also bestimmte Variablen vervollständigen willst, dann lege sie im (Base) Workspace an, und du kannst sie im Editor auch verwenden.

Grüße,
Harald



Ich führe folgendes Script aus.
Code:

matrizen.matrix_a = magic(2);
matrizen.matrix_b = magic(4);
 


nach deiner Aussage müsste mir doch nun nach der Eingabe von " matrizen. " im Editor der Inhalt angezeigt werden.

Irgendwie passiert das aber nicht. Liegt das an meinen Matlab Einstellungen?
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 05.10.2014, 13:56     Titel:
  Antworten mit Zitat      
Meinst du mit Editor das Command Window?

Dort werden bei einem Vektor bzw. Matrix innerhalb eines struct bei dessen Aufruf nur die Felder, Matrixdim. und Datentyp angezeigt. Willst du Werte selbst sehen, musst du schon das jeweilige Feld direkt ansprechen. Nur bei Skalaren innerhalb des structs wird dir der Wert beim Aufruf des structs angezeigt.
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.