poniedziałek, 2 marca 2015

Drukowanie dwustronne - bez duplex - algortytm ;)

Zawsze kiedy chcę wydrukować coś dwustronnie muszę sobie przypomnieć algorytm, który pozwala na najbardziej prawidłowe zadrukowanie drugiej strony. Postanowiłem go w końcu gdzieś zapisać ;] W poradniku używam czytnika PDF Okular.
  1. Wydrukuj najpierw strony nieparzyste(opcja odd) zaznaczając odpowiednią opcję w ustawieniach drukowania.
  2. Wyjmij zadrukowane z jednej strony kartki. Jeśli całkowita liczba wydrukowanych stron jest nieparzysta zabierz ostatnią kartkę.
  3. Włóż kartki w ten sposób aby drukarka zadrukowała puste strony.
  4. Zaznacz opcję wydruku stron parzystych (opcja "even") i opcję drukowania od ostatniej strony("reverse").
  5. W przypadku nieparzystej liczby stron, nie zapomnij o odłożonej ostatniej kartce.

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...