sobota, 28 lutego 2015

[Ubuntu / Linux] Jak zrobić obraz pyty CD

  • Posługując się komendą:
    ls /dev/ | grep cdrom
    Sprawdź jak nazywa się napęd optyczny, którego obraz chcesz zrobić.
  • Następnie, używając nazwy urządzenia, wykonaj plecenie:
    dd if=/dev/cdrom of=~/obraz.iso
    Po jego wykonaniu w katalogu domowym utworzony zostanie obraz płyty.

piątek, 27 lutego 2015

Mały tutorial Matlab / Octave

Dość często zdarza mi się rozwiązać mały problem w środowisku Octave. Prezentuję tutaj najbardziej przydatne rozwiązania.

Rysowanie gęstości

Sposób na rysowanie wykresu funkcji dwuwymiarowej.

a=linspace(-1,1,200);
[xx,yy]=meshgrid(a,a);
colormap("list");
pcolor(a,a,sin(xx.^2+yy.^2)) ;
shading flat
colbar

shading interp

Jak dodać paczkę do OCTAVE

Istnieją na to dwa sposoby:

Instalacja z Octave Forge. W repozytorium Octave Forge wyszukaj paczkę, którą chcesz zainstalować np. "control". Aby dokonać instalacji uruchom Octave i wpisz: "pkg install -forge control". Paczka powinna automatycznie ściągnąć się z repozytorium i zainstalować.

Instalacji można dokonać również ręcznie, ściągając plik: "control-***.tar.gz" (gwiazdki oznaczają wersję) i wpisując "pkg install control-***.tar.gz". Uwaga! Octave musi być otwarte w katalogu w którym znajduje się ściągnięta paczka.

Zainstalowane paczki można wyświetlić poleceniem: "pkg list". Paczki pozbyć się można poleceniem "pkg uninstall control"

Jak pomnożyć wielomiany w Octave

W środowisku Octave wielomian jest reprezentowany przez współczynniki funkcji wielomianowej poczynając od najbardziej znaczącego. Na przykład wektor:
p=[3 -2 4 0 1];
reprezentuje funkcję wielomianową:
p(x)=3*x^4-2*x^3+4*x^2+1
Możemy teraz wyświetlić sobie funkcje wielomianową następującym poleceniem:
polyout(p,'x')
3*x^4 - 2*x^3 + 4*x^2 + 0*x^1 + 1
Mnożenie dwóch wielomianów p,q możemy wykonać poleceniem: r = conv(p,q);. Dzielenie natomiast poleceniem: [b,r] = deconv(y,a);. Gdzie b-wynik dzielenia wielomianów, r-reszta z dzielenia.

Jak numerycznie rozwiązać równanie różniczkowe?

Octave pozwala na rozwiązanie wektorowych równań różniczkowych w postaci dx/dt = f(t,x).

  1. Pierwszym krokiem jest definicja funkcji f(x,t). Załóżmy, że f(x,t)=sin(t).
    octave:1> function x_pirm = f(x,t)
    > x_prim = sin(t);
    > endfunction
  2. Definiujemy czas rozwiązania: t=[0:0.01:6*pi]; lub t=linspace(0,6*pi,2000);
  3. Definiujemy warunki początkowe x_0=1;
  4. Rozwiązujemy równanie poleceniem y=lsode("f",x_0,t);
  5. Rysujemy rozwiązanie: plot(t,y)

Jak znaleźć zero funkcji?

Do rozwiązywanie nie liniowych równań postaci f(x)=0 służy funkcja fsolve.

  1. Najpierw musimy zdefiniować funkcję lub ich układ.
    octave:1> function retval = wielo(x)
    > retval = x.^3-x.^2 +4;
    > endfunction
  2. Kolejnym krokiem jest wybór wartości początkowych x_0. Niech x_0 = -1.
  3. Możemy spróbować rozwiązać równanie poleceniem: fsolve(@wielo,x_0). Powinniśmy otrzymać
  4. octave:3> fsolve(@wielo,x_0)
    ans = -1.3146

    Warto zwrócić uwagę, że nie zawsze polecenie fsolve znajduje poprawne rozwiązanie. Jeśli położymy x_0 = 5, rozwiązanie okaże się błędne.

Jak zmienić grubość linii na wykresie?

Służy do tego parametr 'LineWidth' w funkcji plot. Na przykład: plot(x,y,'LineWidth',2)

czwartek, 12 lutego 2015

Jak pomnożyć wielomiany w Octave.

W środowisku Octave wielomian jest reprezentowany przez współczynniki funkcji wielomianowej poczynając od najbardziej znaczącego. Na przykład wektor:
p=[3 -2 4 0 1];
reprezentuje funkcję wielomianową:
p(x)=3*x^4-2*x^3+4*x^2+1
Możemy teraz wyświetlić sobie funkcje wielomianową następującym poleceniem:
polyout(p,'x')
3*x^4 - 2*x^3 + 4*x^2 + 0*x^1 + 1
Mnożenie dwóch wielomianów p,q możemy wykonać poleceniem: r = conv(p,q);. Dzielenie natomiast poleceniem: [b,r] = deconv(y,a);. Gdzie b-wynik dzielenia wielomianów, r-reszta z dzielenia.

wtorek, 3 lutego 2015

Ciekawe blogi

Szybki wpis typu lista. Lista blogów, które uważam za szczególnie ciekawe:

czwartek, 1 stycznia 2015

[Octave] Jak numerycznie rozwiązać równanie różniczkowe?

Octave pozwala na rozwiązanie wektorowych równań różniczkowych w postaci dx/dt = f(t,x).
  1. Pierwszym krokiem jest definicja funkcji f(x,t). Załóżmy, że f(x,t)=sin(t).
    octave:1> function x_pirm = f(x,t)
    > x_prim = sin(t);
    > endfunction
  2. Definiujemy czas rozwiązania: t=[0:0.01:6*pi]; lub t=linspace(0,6*pi,2000);
  3. Definiujemy warunki początkowe x_0=1;
  4. Rozwiązujemy równanie poleceniem y=lsode("f",x_0,t);
  5. Rysujemy rozwiązanie: plot(t,y)

sobota, 1 listopada 2014

SPI w Raspberry Pi [C / C++]

  1. Zmień zawartość pliku: /etc/modprobe.d/raspi-blacklist.conf na następującą:
    # blacklist spi and i2c by default (many users don't need them)
    #blacklist spi-bcm2708
    blacklist i2c-bcm2708
    blacklist snd-soc-pcm512x
    blacklist snd-soc-wm8804

    Możesz też do tego celu wykorzystać polecenie: sudo raspi-config

  2. Uruchom ponownie RPi lub załaduj moduł jądra ręcznie, poleceniem: sudo modprobe spi-bcm2708. Od tej pory używając polecenia: lsmod powinieneś móc znaleźć moduł jądra o nazwie: spi_bcm2708. Po wykonaniu polecenia ls /devl/spi-0.* powieneś otrzymać wynik:

    /dev/spidev0.0 /dev/spidev0.1

    Pierwsze urządzenie używa sygnału CS(ang. Chip Select) z SPI_CE0_N, drugie z SPI_CE1_N.

  3. Wykonując polecenie: echo -ne "\x01\x02\x03" > /dev/spidev0.0 wyślemy za pomocą SPI liczby kolejno 1,2,3. echo -ne "Ten blog jest fantastyczny!" > /dev/spidev0.0 wyśle ciąg znaków - liczb ASCII - "Ten blog jest fantastyczny!" ;)

  4. Pora na C++ ale C.D.N...

niedziela, 26 października 2014

WiFi w Raspberry Pi

Niedawno stałem się szczęśliwym posiadaczem minikomputera Raspberry Pi B+ ;) Jednym z pierwszy problemów, z którym musi zmierzyć się świeżo upieczony posiadacz malinowego ciastka, jest uruchomienie karty sieciowej WiFi-USB. Karta jaka ja posiadam to: TL-WN721N. Jest to w miarę tanie i sprawdzone, już wcześniej przeze mnie, urządzenie. Na jej przykładzie poniżej, przedstawiam prosty algorytm, który pozwoli każdemu uruchomić tą kartę:

  1. Pod tym linkiem możesz sprawdzić czy RPi jest kompatybilny z twoją kartą: RPi_USB_Wi-Fi_Adapters
  2. Pobierz sterownik: htc_9271.fw
  3. Skopiuj sterownik do folderu:  /lib/firmware
  4. Jeśli nie posiadasz, to zainstaluj następujące paczki: wireless-tools i wpasupplicant
  5. Dodaj na końcu pliku: /etc/network/interfaces - za pomocą komendy: sudo nano /etc/network/interfaces - następującą treść:
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
  6. Stwórz plik: /etc/wpa_supplicant/wpa_supplicant.conf - za pomocą komendy: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf - i wypełnij go następująco:
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
    ssid="NAZWA SIECI"
    psk="HASŁO"
    proto=WPA
    key_mgmt=WPA-PSK
    pairwise=TKIP
    auth_alg=OPEN
    }
  7. Następnie wykonaj:
    sudo ifconfig wlan0 down
    sudo ifconfig wlan0 up

Po tych operacjach karta powinna działać bez problemu. W razie jakichkolwiek problemów, nie bój się zostawić pytania w komentarzu.