Dokładność numeryczna

Poniższy wpis autorstwa pana Grzegorza Knora otrzymał wyróżnienie w naszym czerwcowym konkursie

Wstęp

Poniższy wpis bazuje na wątku dokładność numeryczna z polskiego forum matlab.pl.
Otóż w 2009 roku zetknąłem sie z problemem, który może być zilustrowany za pomocą następującego pseudokodu:

Dla każdego k ze zbioru [0,1, 0,2, 0,3,... 5]

Jeśli zaokrąglona wartość k jest równa k

Wydrukuj k

Czytaj dalej Dokładność numeryczna

MATLAB - Zliczanie twarzy ze zdjęcia tłumu

Poniższy wpis pana Łukasza Wyporka zapewnił autorowi pierwsze miejsce w naszym czerwcowym konkursie

MATLAB - Zliczanie twarzy ze zdjęcia tłumu

29 kwietnia 2015 r. na Rynku w Krakowie miał miejsce wiec wyborczy Janusza Korwin-Mikkego. Byłem bardzo ciekawy ile osób przyszło na spotkanie - niestety - liczyć głów na zdjęciu mi się nie chciało. Postanowiłem więc wykorzystać do tego celu środowisko MATLAB pisząc krótki program zliczający głowy na zdjęciu za mnie.

Całość zajęła (uwaga!) 9 linii kodu. I to jest właśnie fajne w bibliotekach dołączonych do MATLABa - wystarczy z nich skorzystać, a cała „brudna” robota wykonywana jest za nas.

% Create a cascade detector object.
faceDetector = vision.CascadeObjectDetector();
faceDetector.MinSize = [20 22];
faceDetector.MergeThreshold = 3;
I = imread('.\zdjecie_tlumu.jpg');
bboxes = step(faceDetector, I);
IFaces = insertObjectAnnotation(I, 'rectangle', bboxes, 'Twarz', 'LineWidth', 10);
count = size(bboxes)
figure, imshow(IFaces), title(['Ilość wykrytych twarzy: pomiędzy ' int2str(count(1)*1.2) ' a ' int2str(count(1)*1.8) ]);
Rysunek 1 Program w środowisku Matlab
Rysunek 1 Program w środowisku Matlab

Czytaj dalej MATLAB - Zliczanie twarzy ze zdjęcia tłumu

Dane z tabel WWW - regular expression

Dane z tabel WWW

Jeśli ktoś publikuje jakieś dane w internecie, to robi to zazwyczaj w taki sposób, by można się było z tymi danymi łatwo zapoznać. Jeśli danych jest dużo, to dobrym zwyczajem jest, poza umieszczeniem ich w tabeli html, udostępnienie pliku xls, csv, czy choćby txt. Dzięki temu użytkownik będzie miał możliwość łatwego pobrania danych i ich dalszej analizy. Gdy jednak gotowy plik z danymi nie istnieje, nie wszystko stracone. Są sposoby, by dość łatwo skopiować dane ze strony www bezpośrednio w środowisku MATLAB. Pomagają w tym wyrażenie regularne.
Czytaj dalej Dane z tabel WWW - regular expression

Konkurs!

Konkurs

Jeżeli MATLAB skutecznie pomaga Ci w pracy, na studiach lub w realizacji Twojego hobby, weź udział w naszym KONKURSIE na ciekawy wpis blogowy i podziel się swoim doświadczeniem!

Tematem wpisu może być opis:

  • nietypowego wykorzystania oprogramowania,
  • projektu wykonanego w środowisku MATLAB&Simulink,
  • zastosowania ww. środowiska w wybranej dziedzinie,
  • najbardziej przydatnych dla Ciebie funkcjonalności.

Najciekawsze wpisy opublikujemy na MATLABlogu, zaś zwycięzcę nagrodzimy plecakiem z logo firmy MathWorks!

Na zgłoszenia czekamy do 31 lipca pod adresem konkurs@ont.com.pl 🙂

Nadesłanie pracy konkursowej jest równoznaczne z akceptacją regulaminu konkursu i wyrażeniem zgody na przetwarzanie danych osobowych przez firmę ONT.

Regulamin konkursu:
http://www.ont.com.pl/…/Regulamin-konkursu_Wpis-MATLABlog.p…

 

Simulink - przykład zastosowania

Dlaczego Simulink – przykład

(kontynuacja  wpisu poprzedniego)

Gotowe Simulinkowe modele wykorzystane w tym wpisie są dostępne na stronie MATLAB Central. (Załączona prezentacja jest w języku hebrajskim, jednak opisy modeli są po angielsku).

Wyobraźmy sobie dosyć ambitne zadanie, jakim jest zaprogramowanie systemu sterowania kosmicznego lądownika. Sytuacja przedstawia się następująco: z kosmosu w stronę Ziemi zmierza lądownik. Naszym zadaniem jest opracowanie systemu sterowania, który będzie sterował pracą silników w taki sposób, by obiekt wylądował bezpiecznie na powierzchni planety. Jak zabrać się za takie zadanie? Można oczywiście zbudować kilka prototypowych lądowników, wynieść je w kosmos i posyłać kolejno w stronę Ziemi, na gorąco sprawdzając pomysły na najlepszy system sterowania. Lepszym rozwiązaniem jest jednak budowa matematycznego modelu obiektu, na którym bezpiecznie będzie można testować różne koncepcje sterowania. Simulink stworzony został właśnie w takim celu.

Czytaj dalej Simulink - przykład zastosowania

Simulink

Czym jest Simulink?

Simulink - ekran startowy
Czym jest Simulink i dlaczego ktoś miałby chcieć z niego korzystać? To proste pytania, na które nie tak łatwo odpowiedzieć. Może to  od razu budzić zrozumiałą podejrzliwość, bo intuicyjnie czujemy, że jeśli nie można w łatwy sposób przedstawić zalet rozwiązania, to pewnie oznacza, że tych zalet nie ma. W tym wypadku sprawa jest nieco bardziej skomplikowana. Można sobie wyobrazić problem z przedstawieniem mieszkańcom Malediwów uroków jazdy na sankach w zimie. Teoretycznie można to zrobić, ale jak ktoś nie widział śniegu na oczy, to raczej nie zrozumie, zwłaszcza, jeżeli streścimy sprawę w dwóch zdaniach. Przesadnie dokładne i rozbudowane opisy równie rzadko bywają skuteczne choćby ze względu na fakt, że takie opisy są nudne. Wynika to z tego, że każdy z różnych opowieści coś tam o śniegu wie, tylko każdy coś innego i ciężko dostosować przekaz do wiedzy konkretnego słuchacza.

Czytaj dalej Simulink

GUIDE - zapisywanie wyników

MATLAB GUIDE

MATLAB GUIDE prawdopodobnie powoli zacznie odchodzić na emeryturę, jednak póki co jest jeszcze popularnym narzędziem. GUIDE jest intuicyjny w użyciu, jednak od czasu do czasu pojawiają się problemy z osiągnięciem przez użytkownika zamierzonego efektu. Dziś o dosyć częstym problemie – jak zmusić narzędzie do zapisania wyniku pracy w formie matlabowej zmiennej. W czym rzecz? Programy tworzone z pomocą GUIDE nie muszą stanowić zamkniętego, gotowego rozwiązania jakiegoś problemu. Zazwyczaj są jedynie pomocą na drodze do osiągnięcia końcowego wyniku. Często zdarza się, że chcemy przetworzyć jakieś dane i pośredni wynik zamierzamy poddać dalszej analizie w MATLABie, a tutaj GUIDE nie chce od razu współpracować. Poniżej program, który przemnaża dane wejściowe przez dwa. Czytaj dalej GUIDE - zapisywanie wyników

Uprzejmator - aktualizacja

Rozpoznawanie płci mówcy na podstawie dźwięku głosu

Projekt uprzejmator, który zrealizowałem kilka miesięcy temu, dotyczył małego elektronicznego awatara, którego przeznaczeniem było uprzejme wysłuchiwanie kierowanych do właściciela słów (w jego zastępstwie). Uprzejmator potrafi skierować głowę w stronę źródła dźwięku i podtrzymać „konwersację” losową, lecz uprzejmą uwagą. W zasadzie działa to dobrze. Pomyślałem jednak, że może warto by było rozwinąć nieco projekt – uwagi kierowane do rozmówcy mogą być nieco bardziej zróżnicowane, na przykład ze względu na płeć. Nie chodzi tu o żadną planowaną dyskryminację, po prostu wydaje mi się, że wypowiedzenie do mężczyzny słów „świetna fryzura” może mieć inne efekty niż w przypadku skierowania tych samych słów do kobiety. Jeśli kogoś to nie przekonuje, to jest jeszcze jeden argument – szacunek dla języka polskiego. Zasady deklinacji wymuszają na nas stosowanie odmiennych końcówek wyrazów w zdaniach kierowanych do mężczyzn i kobiet. Cokolwiek by nie było motywacją, problem jest jeden: jak sprawić, by maszyna rozpoznała płeć rozmówcy.
Czytaj dalej Uprzejmator - aktualizacja