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

Plot aktualisieren bei Wertänderung im Edit_Feld

 

Mira249
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2014, 11:33     Titel: Plot aktualisieren bei Wertänderung im Edit_Feld
  Antworten mit Zitat      
Hallo,

ich schreibe gerade eine GUI die bei Werteänderung im EditFeld mit jedem neu eingegebenen Parameter die Funktion auf der Stelle plotten soll.

Das Editfeld bezieht sich auf ein Popup-Menu:

Code:
maske=str2double(get(handles.editText, 'String'));


Die im Editfeld, vom Slider übergebenen Werte (1-1000) werden dem Popup-Menu übergeben und anschließend über Switch - Case Abfrage die jeweilige Funktion ausgeführt:

Bsp:
Code:

function filterpopup_Callback(hObject, eventdata, handles)
...
switch(str{val})
        case 'Moving Average'
        window = maske;
        h = ones(window,1)/window;
        y = filter(h, 1, x);
        plot(y)
        title('moving average')...

Wobei die Variable X die Funktion darstellt.

Nun ist mein Problem, dass ich bei jeder Änderung des Editfeldes y neu plotten möchte, sodass die Filtereinstellung optimiert werden kann.

Mein Gedanke war es mit
Code:

function editText_Callback(hObject, eventdata, handles)
...
get(handles.filterpopup, 'String')
den aktuellen Fall zu "holen" und anschließend y zu plotten.
Leider erfolglos.

Ich wäre euch sehr dankbar für jede Hilfe.

Danke.
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: 06.03.2014, 13:13     Titel:
  Antworten mit Zitat      
Hallo,

was genau hast du dann am Ende gemacht, und inwiefern war das "erfolglos"?

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2014, 18:52     Titel:
  Antworten mit Zitat      
Hallo,

ich habe nun den Tip bekommen, einfach die kompette Callbackfunktion, sozusagen ins Editfeld zu packen, sodass jeder Plot direkt bei neuer Parametereingabe ausgeführt wird (ich habe es bisher noch nicht gemacht).

Eine Frage hätte ich jedoch noch. Ich würde mir gerne eine Checkbox mit einer Funktion x basteln, die zusätzlich zu einer Auswahl an weiteren Funktionen per Popupmenü geplottet werden soll wenn die Checkbox aktiviert wurde. Das soll also folgendermaßen aussehen:

Code:

%Ausschnitt

function checkbox_Callback(hObject, eventdata, handles)
if get(handles.checkbox,'Value')==1

xo = beliebige_funktion;
x1=plot(xo,'r');

end

handles.xo=xo;
guidata(hObject,handles);


function popup_Callback(hObject, eventdata, handles)

xo=handles.xo;
val=get(hObject, 'Value');
str=get(hObject,'String');
frameeingabe=str2double(get(handles.frameein, 'String')); %Aus Edit_Text

switch(str{val})

%Am Beispiel eines Sgolay-Filters

    case 'Sgolay'
        frame = frameeingabe;
        degree = 0;
        y = sgolayfilt(x, degree, frame);
       
         if get(handles.checkbox,'Value')==1
              hold on
            plot(y);
              hold off
            plot(xo);
            legend('Sgolay');
         else
             get(handles.ohnerauschenbox,'Value')==0
             plot(y);
         end
 


Also generell soll also nichts anderes getan werden als in den gleichen axes eine Funktion xo zusätzlich zum gewählten Popup (y) zu plotten (überlagern). Das Problem ist jedoch, das es mir nicht möglich ist bei Parameteränderung des Popupbefehls die zuvor geplottete Funktion zu resetten ohne das xo gelöscht wird. Andersherum wäre es mit hold on zwar möglich bei Parameteränderung xo beizubehalten, jedoch plotte ich ständig y neu und das vorherige y bleibt in den axes erhalten ohne das dieses gelöscht wird.

Was mir also kopfzerbrechen bereitet, ob es irgendwie eine Möglichkeit gibt, falls die Checkbox aktiviert ist, xo zu plotten und mit y immer nur einmal zu überlagern, auch bei Parameteränderung?

Vielen lieben Dank.
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: 06.03.2014, 19:38     Titel:
  Antworten mit Zitat      
Hallo,

einfacher als das Kopieren der Callback-Funktion wäre, die andere Callback-Funktion aufzurufen.

Es ist für mich schwierig, die neue Frage genau zu verstehen, insbesondere: was heißt "nur einmal überlagern"?

Wenn bestimmte Linien ersetzt werden und andere erhalten bleiben sollen, dann ist es am besten, nur die Daten der Linie anzupassen:

Beim ersten Mal:
Code:


Beim nächsten Mal:
Code:
set(p, 'XData', xneu)
set(p, 'YData', yneu)


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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 06.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2014, 19:51     Titel:
  Antworten mit Zitat      
Die Frage konnte ich nicht anders formulieren. Dabei habe ich gesehen, dass ich wohl einfach nur das hold on/hold off falsch gesetzt hatte.

Also nun passt es soweit - in der Hoffnung der Tip mit der Übergabe einer Callbackfunktion klappt, sodass das Popupmenü direkt auf neue Eingaben des Sliders oder des Editfeldes reagiert.
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.