MATLAB App Designer

Co nowego w MATLAB - App Designer

Bieżąca wersja MATLABa, która pojawiła się zaledwie kilka tygodni temu, została oznaczona cyfrą 9. Zmiana numeracji sugeruje pojawienie się sporych zmian w środowisku i rzeczywiście, zmiany są. Czy są duże – to już kwestia dyskusyjna. Należy wspomnieć, że firma Mathworks od wielu lat stosuje podwójne oznaczenie wydania każdej kolejnej wersji programu. Obecnie na splash screenie (małym okienku, które pojawia się w czasie uruchamiania programu) pojawia się informacja, że mamy do czynienia z wydaniem oznaczonym jako R2016a, przy czym w nawiasie obok pojawia się również oznaczenie 9.0. Jeśli z kolei w oknie poleceń programu wpiszemy komendę ver, uzyskamy informacje, że mamy do czynienia z wersją 9.0, a obok w nawiasie pojawi się oznaczenie R2016a. Zdaje się, że ostatnimi czasy istotniejsze dla firmy MathWorks jest akcentowanie ewolucji niż rewolucji zachodzących w programie MATLAB. Jeśli przyglądnąć się zmianom, jakie zostały poczynione od ostatniego wydania (R2015b, 8.9), to nie są one olbrzymie, jednak jeśli prześledzić zmiany, jakie zaszły w przeciągu ostatnich dwóch lat, to ulepszeń i modyfikacji nazbiera się całkiem sporo. Można powiedzieć, że produkt dojrzał na tyle, że warto go odróżnić od poprzednich wersji. Ktoś kto dysponuje MATLAbem w wersji 8.0 będzie mógł zaobserwować gigantyczną różnicę pomiędzy starą wersją, a obecną.

MATLAB App Designer

Nie jest oczywiście tak, że nie ma żadnych istotnych zmian w najnowszej wersji względem bezpośredniego poprzednika. Nowości jest kilka, a jedną z ciekawych jest App Designer, narzędzie do projektowania i budowy graficznego interfejsu użytkownika dla MALTABowych programów. W środowisku niemal od zawsze można było posługiwać się narzędziem GUIDE, które spełniało podobną rolę, teraz otrzymujemy o wiele nowocześniejszą alternatywę. GUIDE nie znika i zapewne nie zniknie przez wiele kolejnych lat – utrzymanie kompatybilności programów tworzonych w starych wersjach MATLABa z wersją najnowszą jest dla firmy Mathworks dużym priorytetem. Jeśli jednak w naszym projekcie mamy potrzebę stworzenia graficznego interfejsu użytkownika to warto sprawdzić, czy wykorzystanie do tego celu narzędzia App Designer nie będzie dobrym rozwiązaniem. App Designer umożliwia tworzenie ładnych i nowocześnie wyglądających aplikacji, a ponadto wykorzystuje obiektowe cechy języka MATLAB. To wszystko sprawia, że praca z nim jest prosta i przyjemna.

O czego zacząć? Najlepiej od pomysłu na aplikację. Ten, który przedstawiam jest bardzo prosty. Poniższy przykładowy program ma umożliwić rejestrację sygnału otrzymanego na wejściu mikrofonowym komputera(pisząc bardziej po Polsku – dźwięku) i wyświetlenie przebiegu w formie wykresu.

Jak już wiadomo co ma powstać można wpisać w oknie Command Window polecenie appdesigner.

Okno App Designer zostało podzielone na 3 części. Z lewej strony mamy paletę dostępnych komponentów (suwaków, wskaźników, przycisków itp.). Wybrane elementy możemy przeciągnąć na płótno znajdujące się w środkowej części okna. Po prawej stronie wyświetlona jest lista użytych komponentów (mamy możliwość zmiany ich nazwy). Możemy również zmieniać parametry związane z konkretnym, zaznaczonym komponentem.

rozstawienie elementow

Po rozstawieniu elementów należy pozmieniać ich własności. Dla każdego elementu będzie to na pewno wyświetlany opis, w przypadku okrągłego przełącznika dochodzi zmiana informacji wyświetlanych przy podziałkach. Po zaznaczeniu danego elementów wszelkich zmian można dokonać w oknie properties znajdującym się w prawej dolnej części ekranu.
zmiana parametrów

Ostatnią czynnością jaka pozostała do wykonania w obecnym widoku projektu jest przypisanie do przycisku start funkcji, która ma zostać wykonana, gdy przycisk zostanie wciśnięty. W tym celu należy zaznaczyć element, wcisnąć prawy przycisk myszy i wybrać opcję Callbacks -> Add Button ...
callback
W tym momencie przechodzimy do edycji klasy związanej z tworzoną aplikacją. Edycja całości kodu nie jest możliwa, co ma stanowić zabezpieczenie projektu przed nami 🙂 Jeśli chcemy dodać do klasy jakieś własne pola (choćby do przechowywania/przenoszenia danych) przed przystąpieniem do wpisywania kodu musimy wcisnąć odpowiedni przycisk widoczny w zakładce editor. W naszym przypadku przydadzą się dwa pola.

    properties (Access = private)
        recorder % nagrywacz
        fp = 8000 %częstość próbkowania
    end

kod końcowy

Warto zwrócić uwagę, że w końcu wykorzystujemy obiektowe cechy języka MATLAB. Do nagrywania dźwięku również można wykorzystać dedykowaną klasę audiorecorder. Dzięki temu całą obsługę nagrywania można zamknąć w jednym obiekcie a jedyne dodatkowe pole, które będzie potrzebne, posłuży do przechowywania informacji o wybranej częstości próbkowania dźwięku.
W zasadzie do uzupełnienia pozostały dwa bloki kodu. Uzupełnić należy metodę startupFcn wywoływaną automatycznie po uruchomieniu aplikacji oraz metodę ButtonButtonPushed sterującą zachowaniem aplikacji po wciśnięciu przycisku start. I to wszystko.

    methods (Access = private)

        % Code that executes after component creation
        function startupFcn(app)
            app.recorder = audiorecorder(app.fp, 16, 2);
            app.Lamp.Enable = 'off';
            xlabel(app.UIAxes, 'Czas [s]');
            ylabel(app.UIAxes, 'Amplituda [V]');
            title(app.UIAxes, 'Przebieg sygnału')
            grid(app.UIAxes, 'on');
            
        end

        % Button button pushed function
        function ButtonButtonPushed(app)
            T = str2double(app.DiscreteKnob.Value); % ustalenie czasu nagrywania
            app.Lamp.Enable = 'on';
            app.Button.Enable = 'off';
            recordblocking(app.recorder, T);
            data = getaudiodata(app.recorder);
            app.Lamp.Enable = 'off';
            app.Button.Enable = 'on';
            dt = 1/app.fp;
            t = 0:dt:T-dt;
            plot(app.UIAxes, t, data);
            
            
            
        end
    end

App Designer w obecnej wersji ma pewne wady. Choć zamiast wady może lepiej napisać: ograniczone możliwości. Nie da się w narzędziu zrobić wszystkiego, nie można choćby uzyskać wykresów 3d, co można osiągnąć w GUIDE. Można mieć jednak nadzieję, że z czasem pojawią się dodatkowe funkcjonalności. Na pewno warto zainteresować się tym rozwiązaniem. Komfort pracy w App Designerze jest nieporównywalnie większy od tego, co oferuje nam GUIDE.

aplikacja

(Visited 804 times, 7 visits today)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *