PRZETWARZANIE SYGNAŁÓW
Laboratorium #1

Wprowadzenie - Python i środowisko Enthought Canopy

M. Kociński, P. Strumiłło, A. Borowska-Terka

Zakład Elektroniki Medycznej
Instytut Elektroniki


In [1]:
import funkcje_do_lab1 as f
f.hide()
Out[1]:
W celu przejrzystości instrukcji, kod Ipython notebook jest domyślnie ukryty. Aby zobaczyć/ukryć kod, kliknij tutaj.

CEL: Zapoznanie się ze środowiskiem Enthough Canopy – definicja zmiennych, tablice oraz działania na tablicach.

ZADANIA:
1. Na dysku twardym komputera utwórz katalog: ‘D:/Biomed2014_pl’. Wszystkie skrypty, funkcje i pliki będziesz zapisywał w tym katalogu.
2. Uruchom Edytor w Canopy.
3. Zmień bieżący katalog środowiska Canopy na utworzony w pkt. 1 katalog
(w oknie komend wpisz polecenie: >>cd D:/Biomed2014_pl)
4. Aby sprawdzić bieżący katalog użyj polecenia: >>pwd

OCZEKIWANE WYNIKI:

In [2]:
home = f.ad1()
*****
bieżący katalog:
H:\Signal processing\polska_wersja\lab_1

*****
zmiana bieżącego katalogu na D
D:\

*****
utwórz i zmień bieżący katalog na: D:/Biomed2014_pl
D:\Biomed2014_pl

*****
zawartość obecnego katalogu:
[]

5.W Edytorze Canopy utwórz następujące zmienne:
Wskazówka: skorzystaj ze strony http://wiki.scipy.org/Tentative_NumPy_Tutorial, ‘Array creation’

In [3]:
f.fig(f.w1)
Out[3]:

Sprawdź własności każdej zdefiniowanej macierzy wpisując następujące polecenia: variable_name.ndim, variable_name.shape, variable_name.size, variable_name.dtype, variable_name.itemsize.
Wpisz f=zeros_like(d) aby utworzyć nową tablicę f o takim samym wymiarze i typie danych jak tablica d, ale wypełnioną zerami.
Utwórz tablicę b1 o takim samym wymiarze i wartościach jak tablica b, ale o typie danych: dtype=’uint8’

OCZEKIWANE WYNIKI:

In [4]:
f.ad5()

a= 5

b= [ 1 -2  4]

c= [[ 2.]
 [ 0.]
 [-1.]]
c2= [[5]
 [4]]

d= [[ 1  0  2]
 [ 4 -3  1]
 [ 2  2  3]]

e= [[ 1.+1.j]
 [ 1.+0.j]]

Utwórz liczbę zespoloną: 1+3j, używając komendy >>complex
e1= (1+3j)

**********************************************************************
Własności macierzy (dimensions, shape, size, dtype, itemsize):
**********************************************************************
[ 1 -2  4] 1 (3,) 3 int32 4
*****
[[ 2.]
 [ 0.]
 [-1.]] 2 (3, 1) 3 float64 8
*****
[[ 1  0  2]
 [ 4 -3  1]
 [ 2  2  3]] 2 (3, 3) 9 int32 4
*****
[[ 1.+1.j]
 [ 1.+0.j]] 2 (2, 1) 2 complex128 16
*****

******************************
Polecenia zeros_like i dtype:
******************************
parametry f: int32 (3, 3)
parametry b: [ 1 -2  4] int32
parametry b1: [  1 254   4] uint8

6.Tworzenie wektorów:

Wywołaj instrukcję help(arange)
Wpisz komendy: g=arange(10); h=arange(10.), i=arange(5,15,3)

Utwórz następujące wektory:

In [5]:
f.fig(f.w2)
Out[5]:

Wskazówka: wywołaj instrukcję help dla następujących funkcji: zeros, ones
(składnia polecenia help: >>help(function_name))

OCZEKIWANE WYNIKI:

In [6]:
f.ad6()
g= [0 1 2 3 4 5 6 7 8 9]

h= [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]

i= [ 5  8 11 14]

j= [  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
  91  92  93  94  95  96  97  98  99 100 101]

k= [ 500  490  480  470  460  450  440  430  420  410  400  390  380  370  360
  350  340  330  320  310  300  290  280  270  260  250  240  230  220  210
  200  190  180  170  160  150  140  130  120  110  100   90   80   70   60
   50   40   30   20   10    0  -10  -20  -30  -40  -50  -60  -70  -80  -90
 -100 -110 -120 -130 -140 -150 -160 -170 -180 -190 -200 -210 -220 -230 -240
 -250 -260 -270 -280 -290 -300 -310 -320 -330 -340 -350 -360 -370 -380 -390
 -400 -410 -420 -430 -440 -450 -460 -470 -480 -490 -500 -510 -520 -530 -540
 -550 -560 -570 -580 -590 -600 -610 -620 -630 -640 -650 -660 -670 -680 -690
 -700 -710 -720 -730 -740 -750 -760 -770 -780 -790 -800 -810 -820 -830 -840
 -850 -860 -870 -880 -890 -900]

l= [  0.    0.1   0.2   0.3   0.4   0.5   0.6   0.7   0.8   0.9   1.    1.1
   1.2   1.3   1.4   1.5   1.6   1.7   1.8   1.9   2.    2.1   2.2   2.3
   2.4   2.5   2.6   2.7   2.8   2.9   3.    3.1   3.2   3.3   3.4   3.5
   3.6   3.7   3.8   3.9   4.    4.1   4.2   4.3   4.4   4.5   4.6   4.7
   4.8   4.9   5.    5.1   5.2   5.3   5.4   5.5   5.6   5.7   5.8   5.9
   6.    6.1   6.2   6.3   6.4   6.5   6.6   6.7   6.8   6.9   7.    7.1
   7.2   7.3   7.4   7.5   7.6   7.7   7.8   7.9   8.    8.1   8.2   8.3
   8.4   8.5   8.6   8.7   8.8   8.9   9.    9.1   9.2   9.3   9.4   9.5
   9.6   9.7   9.8   9.9  10. ]

m= [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

n= [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

p= [[1 0]
 [0 1]]


7.Wpisz polecenie %whos aby sprawdzić zdefiniowane zmienne w środowisku Canopy. Użyj polecenia %xdel, które usuwa zdefiniowane zmienne. Uwaga: polecenie %reset usuwa wszystkie zmienne, zaimportowane moduły i zdefiniowane funkcje.
8.Używając polecenia array() utwórz wektory: r=[1 -2 4], s=[7 2 3] a następnie policz: r+s, r*s, r**s, dot(r,s)

OCZEKIWANE WYNIKI:

In [7]:
f.ad8()
r + s = [8 0 7]
r * s = [ 7 -4 12]
r ** s = [ 1  4 64]
np.dot(r,s)= 15

9.Wykonaj dodawanie, mnożenie, dzielenie przez 2 oraz oblicz drugą potęgę wektora r=[1 -2 4], wykonując następujące polecenia: r+=2, r*=2, r/=2, r**=2

OCZEKIWANE WYNIKI:

In [8]:
f.ad9()
r =  [ 1 -2  4]
r += 2: [3 0 6]
r *= 2: [ 6  0 12]
r /= 2: [3 0 6]
r **= 2: [ 9  0 36]


10.Zdefiniuj tablicę t:

In [9]:
f.fig(f.m)
Out[9]:

i policz: t.min(), t.max(),: t.min(axis=0), t.min(axis=1), t.max(axis=0), t.max(axis=1).
Sprawdź polecenia: prod, average, std, var, round, clip, ptp, floor, ceil, flipud, fliplr, rot90 i użyj ich dla tabeli t.

OCZEKIWANE WYNIKI:

In [10]:
f.ad10()
t= [[ 1.1    4.56   8.999]
 [ 2.     3.     4.   ]
 [ 6.78   2.44   5.55 ]]

t.min(): 1.1
t.max(): 8.999
t.min(axis=0): [ 1.1   2.44  4.  ]
t.min(axis=1): [ 1.1   2.    2.44]
t.max(axis=0): [ 6.78   4.56   8.999]
t.max(axis=1): [ 8.999  4.     6.78 ]
t.prod(): 99466.1995825
np.average(t): 4.26988888889
t.std(): 2.37165064152
t.var(): 5.62472676543
t.round():
[[ 1.  5.  9.]
 [ 2.  3.  4.]
 [ 7.  2.  6.]]
t.clip(1,3):
[[ 1.1   3.    3.  ]
 [ 2.    3.    3.  ]
 [ 3.    2.44  3.  ]]
np.floor(t):
[[ 1.  4.  8.]
 [ 2.  3.  4.]
 [ 6.  2.  5.]]
np.ceil(t):
[[ 2.  5.  9.]
 [ 2.  3.  4.]
 [ 7.  3.  6.]]
np.flipud(t):
[[ 6.78   2.44   5.55 ]
 [ 2.     3.     4.   ]
 [ 1.1    4.56   8.999]]
np.fliplr(t):
[[ 8.999  4.56   1.1  ]
 [ 4.     3.     2.   ]
 [ 5.55   2.44   6.78 ]]
np.rot90(t):
[[ 8.999  4.     5.55 ]
 [ 4.56   3.     2.44 ]
 [ 1.1    2.     6.78 ]]