• Đọc ghi file audio wav.• Hiển thị sóng • Một số thao tác với phần hiển thị sóng • Chuyển đổi sáng miền tần số DCT, DFT... Đọc file wav Để đọc/load một file audio .wav dùng hàm wavread
Trang 1Hướng dẫn
thực hành
Bộ môn Khoa học máy tính Khoa Công nghệ thông tin
Trang 2• Đọc ghi file audio (wav).
• Hiển thị sóng
• Một số thao tác với phần hiển thị sóng
• Chuyển đổi sáng miền tần số DCT, DFT.
Nội dung
Trang 3Đọc file wav
Để đọc/load một file audio (.wav) dùng hàm wavread với cú pháp như sau:
◦ y = wavread(filename)
◦ [y, Fs, nbits] = wavread(filename)
◦ [y, Fs, nbits, opts] = wavread(filename)
◦ y: dữ liệu các sample của file wav
◦ Fs : sample rate (Hz)
◦ nbits: số lượng bit trên 1 sample
◦ opts: 1 cấu trúc lưu những thông tin khác của file wav
Trang 4Đọc file wav
Ví dụ:
Fs nbits
Trang 5Đọc file wav
size = wavread(filename, 'size')
siz = [samples channels]
Trang 6Lấy thông tin khác của file wav
[m d] = wavfinfo(filename)
◦ m : chuỗi cho biết có phải đây là file wav hay không
◦ d: thông tin về số lượng sample và số channel của file
Trang 7Ví dụ đọc và play file wav
// hfile lưu đường dẫn đến file wav
hfile = 'H:\Vi toi la chang ngoc.wav';
// đọc file wav
[y, Fs, nbits, readinfo] = wavread( hfile );
// play file wav
p = audioplayer(y, Fs);
play(p);
// stop file wave
stop(p);
Trang 8ghi file wav
Để ghi/lưu một file audio (.wav) dùng hàm wavwrite có cú pháp như sau:
wavwrite(y,filename)
wavwrite(y,Fs,filename)
wavwrite(y,Fs,N,filename)
Trang 9Ví dụ ghi file wav
// đường dẫn đến file wav
hfile = 'H:\Vi toi la chang ngoc.wav';
// đọc file wave
[y, Fs, nbits, readinfo] = wavread(hfile);
// đường dẫn file wav lưu
hfile1 = 'H:\Vi toi la chang ngoc1.wav';
// ghi file wave
wavwrite(y, Fs, hfile1)
Trang 11Một số thao tác khi hiển thị sóng
sAndDataBrushing.html
Trang 12Chuyển đổi sang miền tần số DCT
Để chuyển tín hiệu một chiều sang miền tần số DCT, dùng hàm dct với cú pháp như sau:
Trang 13Chuyển đổi sang miền tần số DCT
Để biến đổi ngược lại từ miền DCT, dùng hàm idct với cú pháp như sau:
y = idct(u)
◦ u : tín hiệu trong miền dct
◦ y : kết quả trả về của biến đổi dct ngược
Ví dụ:
// biến đổi dct ngược
arec0 = idct(y0);
figure,plot(abs(arec0)),title('abs(IDCT)');
Trang 14Chuyển đổi sang miền tần số DCT
Để chuyển tín hiệu 2-chiều sang miền tần số DCT, dùng hàm dct2 với cú pháp như sau:
RGB = imread('Love friend.jpg');
I = rgb2gray(RGB); // chuyển ảnh màu sang gray
J = dct2(I); // biến đổi dct2
// hiển thị log của abs(J)
imshow(log(abs(J)),[]), colormap(jet(64)), colorbar
Trang 15Chuyển đổi sang miền tần số DCT
Để biến đổi ngược lại từ DCT, dùng hàm idct2 với cú pháp như sau:
y = idct2(u)
◦ u : tín hiệu 2-chiều từ miền dct
◦ y : kết quả biến đổi dct ngược trả về
Ví dụ: (tiếp ví dụ trước)
K = idct2(J); // biến đổi dct2 ngược
figure,imshow(I) // hiển thị ảnh I
figure, imshow(K,[0 255]) // hiển thị ảnh biến đổi ngược lại
Trang 16Chuyển đổi sang miền tần số
Chuyển tín hiệu 1 chiều sang miền tần số fourier rời rạc (DFT), dùng hàm fft với cú pháp như
sau:
y = fft(u)
◦ u : vector cần chuyển sang DFT
◦ y: kết quả biến đổi DFT
Trang 17Chuyển đổi sang miền tần số
Để biến đổi ngược lại từ miền tần số fourier rời rac (DFT), dùng hàm ifft với cú pháp như sau:
y = ifft(u)
◦ u : vector biểu diễn giá trị ở miền DFT
◦ y: kết quả biến đổi DFT ngược
Ví dụ: (tiếp ví dụ trước)
// biến đổi ifft ngược
arec0 = ifft(y0);
figure,plot(abs(arec0)),title('abs(IDFT)');
Trang 18Chuyển đổi sang miền tần số
Chuyển tín hiệu 2 chiều sang miền tần số fourier rời rac (DFT), dùng hàm fft2 với cú pháp như
sau:
y = fft2(u)
◦ u : tín hiệu 2 chiều cần chuyển sang DFT
◦ y: kết quả biến đổi DFT
Trang 19Chuyển đổi sang miền tần số
Để biến đổi ngược lại từ miền tần số fourier rời rạc (DFT), dùng hàm ifft2 với cú pháp như sau:
y = ifft2(u)
◦ u : tín hiệu 2 chiều ở miền DFT
◦ y: kết quả biến đổi DFT ngược
Ví dụ: (tiếp ví dụ trước)
// biến đổi fft2 ngược
arec0 = ifft2(y0);