Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MatLab-->Slider(pobieranie wartosci z suwaka)

06 Kwi 2007 17:38 5396 12
  • Poziom 12  
    Prosze o pomoc w takiej sprawie: dopiero zaczynam zabewe w Matlabie i potrzebuje pewnej rady a mianowicie...w jaki sposób pobrac wartosc z suwaka...chodzi o projekt w GUI
  • Poziom 13  
    Znalazłem to w swoich plikach jeszcze z zajęć z Matlabem:

    Przykładowy kod inicjalizacji slidera o nazwie "Vslider" w głównym M-pliku skrtyptu:
    Code:
    Vslider=uicontrol('style','slider');
    
    set(Vslider,'units','normalized');
    set(Vslider,'position',[.94 .055 .035 .4]);
    set(Vslider,'callback','nastawy'); //tutaj wybierasz nazwę pliku, który Matlab będzie wykonywał kiedy wykryje zmianę położenia slidera
    set(Vslider,'min',0,'max',3);
    set(Vslider,'value',beta);

    A w pliku nastawy.m:
    Code:
     poziom = get(Vslider,'value');
    


    Jeżeli nie ustawisz callbacka dla tego obiektu GUI, to wartość możesz zczytywać także przy obsłudze innego zdarzenia.


    A jeżeli chcesz aby w polu tekstowym wyświetlała Ci się wartość nastawy slidera zrób tak:
    Code:
    set(nastawab,'string',num2str(get(Vslider,'value')));
    

    gdzie "nastawab" jest polem edit inicjalizowanym:
    Code:

    nastawab=uicontrol('Style','edit');
    set(nastawab,'units','normalized');
    set(nastawab,'position',[.91 .46 .08 .04]);
    set(nastawab,'string',num2str(get(Vslider,'value'))) ;
  • Poziom 12  
    dzieki za info ale cos mi nie dzila mozesz to sprawdzic..:


    eslider=uicontrol('style','slider')
    set(eslider,'position',[20 60 20 90])
    set(eslider,'min',0,'max',10)
    set(eslider,'value',z)


    txt=uicontrol('style','edit')
    set(txt,'position',[40 60 30 20])
    set(txt,'string',num2str(get(eslider,'value')))
  • Poziom 13  
    Pamiętaj że położenie obiektu jest w jednostkach względnych w przedziale 0:1.

    Zamiast [20 60 20 90] spróbuj [.20 .60 .20 .10] albo [0.20 0.60 0.20 0.10]. Dwie pierwsze liczby oznaczają położenie obiektu względem lewego górnego rogu okna GUI, a dwie pozostałe jego rozmiar.
  • Poziom 12  
    ale wiesz chodzi mi ze w ogole w tym okienku tekstowym nie wyswietla sie wartosc liczbowa suwaka
  • Poziom 13  
    W ogóle Ci się nie wyświetla? Czy tylko jak ruszysz sliderem?
    1. Nie widzę tego:
    set(eslider,'callback','plik')
    2. Czy inicjalizacja txt następuje po inicjalizacji eslidera?
    3. Czy przypisałeś już wartość z?
  • Poziom 12  
    Mam cos takiego:

    z=0
    x=get(b,'value')
    a=figure
    set(a,'name',['Okno 1'])

    %tworzenie suwaka
    eslider=uicontrol('style','slider')
    set(eslider,'position',[20 60 20 90])
    x=get(eslider,'value')
    set(eslider,'callback','x')
    set(eslider,'min',0,'max',10)
    set(eslider,'value',z)


    %tworzenie teksu z wartoscia suwaka

    txt=uicontrol('style','edit')
    set(txt,'position',[40 60 30 20])
    set(txt,'string',num2str(get(eslider,'value')))
  • Pomocny post
    Poziom 13  
    Code:
    %tworzenie suwaka 
    
    eslider=uicontrol('style','slider')
    set(eslider,'position',[20 60 20 90])
    set(eslider,'callback','plik')
    set(eslider,'min',0,'max',10)
    set(eslider,'value',z)

    Wartością atrybutu 'callback' jest nazwa pliku!
    W osobnym pliku o nazwie plik.m piszesz skrypt obsługujący zdarzenie:
    Code:
    set(txt,'string',num2str(get(eslider,'value')))

    U mnie działa.
  • Poziom 12  
    oka juz dziala i wielkie dzieki wiemjaki wlaek robile..;)

    Dodano po 3 [minuty]:

    a jeszcze jedno jesli tym suwakiem reguluje pewna wielkość która np: musze pomnozyc przez 5...to jaka musi byc formula zeby mi zwracala wartosc tej wielkosci suwaka...np: (wartosc suwaka)*5 rozumiesz???
  • Poziom 13  
    get(eslider,'value') - to jest wartość numeryczna.

    Co oznacza, że możesz zrobić:
    new = 5*get(eslider,'value').

    Możesz nawet zrobić tak:
    set(txt,'string',num2str(5*get(eslider,'value')))
  • Poziom 12  
    ok a jesli ta wartość tego suwaka ma byc np: wspołrzedna punktu lub funkcji to wystaczy

    p=get(eslider,'value')
    plot(p,2)

    lub

    f_x=2*p^2
    fplot('f_x',[ ])
  • Poziom 1  
    Witam.

    Odnośnie sliderów, miałbym następujące pytanie:

    czy jest możliwość sprzężenia wartości ustawianej za pomocą slidera z wartością edit textu - tak, aby w przypadku przesunięcia slidera płynnie wyświetlała się aktualna wartość, ale jednocześnie - w przypadku wpisania wartości w edit slider został także przesunięty na zadaną pozycję?

    Pozdrawiam. :)
  • Poziom 2  
    Możesz skorzystać z callback'ów dla slidera i edit i funkcji set. Przykładowo, jeśli uchwyt do slidera, to slider1, a do edit'a edit1, to w callback'u edita (przy zmianie jego wartości) zmień pozycję slider'a:

    Code:

    pos = str2num(get(edit1,'String'));
    set(slider1,'Value',pos);


    Do tego oczywiście musisz wrzucić obsługę wartości, żeby był odpowiedni zakres i odwrotną funkcję musisz zrobić dla pola edit

    pzdr!