import funkcje_do_lab3 as f3
f3.hide()
CEL:
Zapoznanie się z importowaniem pakietów Pythona oraz wczytywaniem i zapisywaniem plików tekstowych, binarnych, dźwiękowych (wave) oraz plików binarnych programu Matlab.
ZADANIA:
1.W tym ćwiczeniu poznamy cztery sposoby importowania pakietów Pythona w celu użycia ich we własnych skryptach. Utwórz i uruchom następujące skrypty w utworzonym folderze D:/Biomed2014_pl: sinus1.py, sinus2.py, sinus3.py, sinus4.py:
f3.fig(f3.s1)
f3.fig(f3.s4)
OCZEKIWANE WYNIKI:
%pylab inline
print ''
print 'sinus1:'
f3.sinus1()
print ''
print 'sinus2:'
f3.sinus2()
print ''
print 'sinus3:'
f3.sinus3()
sinus4 (Import - sposób niezalecany!):
from pylab import *
from numpy import *
x=arange(100)
y=sin(x*pi/50)
plot(x,y)
show()
2.Wczytywanie i zapisywanie plików w formacie ASCII (plików tekstowych)
f3.fig(f3.r)
Zwróć uwagę, że zapis oraz wczytywanie plików odbywa się w bieżącym katalogu.
Dla wczytania/zapisania plików z innego katalogu należy podać pełną cieżkę do pliku, np.:
xx, yy1, yy2 = np.loadtxt('d:/Biomed2014_pl/my_sin_cos.txt')
import numpy as np
x = np.arange(100)
y1 = np.sin(x*np.pi/50)
y2 = np.cos(x*np.pi/50)
np.savetxt('my_sin_cos.txt', (x,y1,y2),fmt='%.2f')
import os
files = os.listdir('.') #wszystkie pliki w bieżącym katalogu
print 'Czy plik my_sin_cos.txt został nagrany?'
'my_sin_cos.txt' in files #sprawdzenie, czy plik 'my_sin_cos.txt' został nagrany?
import numpy as np
# wczytanie danych z pliku:
xx, yy1, yy2 = np.loadtxt('my_sin_cos.txt')
# wyrysuj wczytane dane
# możemy importować poszczegulne moduły(moduły lub funkcje z modułów) także w środku skryptu
from pylab import plot, show, title, figure
figure(1)
plot(xx,yy1,xx,yy2)
title('Loaded data - case 1')
show()
3.Wczytywanie i zapisywanie plików binarnych Pythona .npy and .npyz
f3.fig('binary_files.png')
import numpy as np
b = np.arange(20.)
np.save('b.npy', b)
print 'Zmienna b:'
print b
print 'Zawartoć pliku b2.npy:'
b2 = np.load('b.npy')
print b2
cc = np.arange(5)
dd = np.arange(4,15,2.5)
ee = np.arange(100,110,2)
print 'cc:'
print cc
print 'dd:'
print dd
print 'ee:'
print ee
print ''
print 5*'*'
# nazwy: a,b,c będą nazwami kluczy tablicy
np.savez('multi_array.npz',a=cc, b=dd, c=ee)
#wczytywanie danych z pliku
multi = np.load('multi_array.npz')
print 'Lista tablic zapisana w tablicy <multi>:'
print multi.files
print ''
# to select and print individual arrays type in:
print 'Tablica a:'
print multi['a']
print ''
# przypisanie do nowej tablicy
zz = multi['b']
print 'Tablica zz:'
print zz
4.Wczytywanie i zapisywanie plików programu Matlab *.mat
f3.fig('matlab_files.png')
from scipy.io import loadmat, savemat
from numpy import reshape
from pylab import plot
ecg=loadmat('ecg_all.mat')['ecg_s']
ecg=reshape(ecg,len(ecg))
plot(ecg)
show()
#zapisywanie danych w pliku .mat
savemat('ecg_py.mat',{'ecg_new':ecg})
5.Wczytywanie, zapisywanie oraz odtwarzanie plików dźwiękowych *.wav
f3.fig('play_audio.png')
import winsound
winsound.PlaySound("scale.wav", winsound.SND_ALIAS)
f3.fig('load_wave.png')
OCZEKIWANE WYNIKI:
from scipy.io.wavfile import read as read_wav
sampling_rate, data = read_wav('scale.wav')
print sampling_rate
print data
from scipy.io.wavfile import write as write_wav
write_wav('inv_scale.wav',sampling_rate,data[::-1])
winsound.PlaySound("inv_scale.wav", winsound.SND_ALIAS)
6.Możesz pracować interaktywnie z dźwiękiem (sygnałami).
Tym razem uruchom linię komend systemu operacyjnego. Zmień bieżący katalog na D:/Biomed2014_pl.
Wpisz polecenie >>ipython notebook
Wybierając przycisk [New notebook] utwórz nowy plik audio.ipynb
W pierwszej komórce wpisz następującą sekwencję poleceń:
from IPython.display import Audio
import numpy as np
f1 = 320
f2 = 345
rate = 8000.0
L=3
times = np.linspace(0, L, rateL)
signal = np.cos(2np.pif1times) + np.cos(2np.pif2*times)
Audio(data=signal, rate=rate)
Uruchom skrypt wybierając przycisk [Run Cell]. Zmień wartości zmiennych f1, f2, rate i uruchom skrypt ponownie.
OCZEKIWANE WYNIKI:
from IPython.display import Audio
import numpy as np
f1 = 320
f2 = 345
rate = 8000.0
L=3
times = np.linspace(0, L, rate*L)
signal = np.cos(2*np.pi*f1*times) + np.cos(2*np.pi*f2*times)
Audio(data=signal, rate=rate)