Tải bản đầy đủ (.pptx) (23 trang)

Demo Matlab-Audio potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.73 MB, 23 trang )

Hướng dẫn
thực hành
Bộ môn Khoa học máy tính
Khoa Công nghệ thông tin

Đọ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
Đọ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)

Trong đó

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
Đọc file wav

Ví dụ:
Fs
Fs
nbits
nbits
Đọc file wav

size = wavread(filename, 'size')
siz = [samples channels]
Lấ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
Ví 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);

ghi 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)
Ví 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)
Hiển thị sóng

Để hiển thị sóng của một file wav, bạn có thể dùng plot với cú pháp như sau

plot(Y)

Ví dụ:
// tên file wave
hfile = 'handel.wav';
// đọc file wave
[y, Fs, nbits, readinfo] = wavread(hfile);
// hiển thị sóng
plot(y)
Một số thao tác khi hiển thị sóng


/>sAndDataBrushing.html
Chuyể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:
y = dct(u)

u : tín hiệu một chiều.

y : kết quả biến đổi dct2 trả về.

Ví dụ:
// phát sinh mảng tín hiệu 1 chiều
a = rand(100,1);
// biến đổi dct 1 chiều
y0 = dct(a);
figure,plot(abs(y0)),title('abs(DCT)');
Chuyể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)');
Chuyể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:
y = dct2(u)

u : tín hiệu 2-chiều.

y : kết quả biến đổi dct2 trả về.

Ví dụ:
// load một ảnh màu
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
Chuyể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
Chuyể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.

Ví dụ
// phát sinh mảng tín hiệu 1 chiều
a = rand(100,1);
// biến đổi fft
y0 = fft(a);
figure,plot(abs(y0)),title('abs(DFT)');
Chuyể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)');
Chuyể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.

Ví dụ
// phát sinh mảng tín hiệu 1 chiều
a = rand([100,100]);
// biến đổi fft2
y0 = fft2(a);
Chuyể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);
Các bộ lọc

Để lọc trên tín hiệu một chiều, người ta dùng hàm filter với cấu trúc như
sau
y = filter(b,a,X)
[y,zf] = filter(b,a,X)

[y,zf] = filter(b,a,X,zi)
y = filter(b,a,X,zi,dim)
[ ] = filter(b,a,X,[],dim)
Ví dụ lọc tín hiệu 1 chiều
hfile = 'handel.wav';
[y, Fs, nbits, readinfo] = wavread(hfile);
// ma trận lọc
windowSize = [0.2 0.2 0.2 0.2 0.2];
// lọc
z = filter(windowSize,1,y);
// hiển thi kết quả
figure, plot(y)
figure, plot(z)
Các bộ lọc

Để lọc trên tín hiệu hai chiều, người ta dùng hàm filter2 với cấu trúc như
sau
Y = filter2(h,X)
Y = filter2(h,X,shape)
Ví dụ lọc tín hiệu 2 chiều
hfile = 'handel.wav';
[y, Fs, nbits, readinfo] = wavread(hfile);
// ma trận lọc
windowSize = [0.2 0.2 0.2 ; 0.2 0.2 0.2];
// lọc
z = filter2(windowSize,y);
// hiển thi kết quả
figure, plot(y)
figure, plot(z)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×