1. Trang chủ
  2. » Cao đẳng - Đại học

Bài tập lớn : XỬ LÝ SỐ TÍN HIỆU

31 537 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 427,1 KB

Nội dung

Họ Tên STT MSSV Lớp : : : : Nguyễn Kim Thành 369 20083484 Kỹ Thuật Đo – K53 Bài tập lớn : XỬ LÝ SỐ TÍN HIỆU Project 5: HIGH-SPEED CONVOLUTION EXERCISE 5.1:FFT conv Function 1.Viết lại hàm conv sử dụng thuật toán overlap-save Ta đặt tên hàm thành new_conv.Hàm sử dụng kĩ thuật overlap-save.Chia tín hiệu dài thành nhiều khối nhỏ.Sử dung fft để tính đầu lấy L điểm cuối khối.Đoạn chương trình viết MATLAB sau: %Đầu vào tín hiệu cần nhân chập chiều dài FFT ta sử dụng %Đầu tín hiệu y chập tuyến tính cần tìm function y=new_conv(x,h,N) nx=length(x); nh=length(h); %%Chọn tín hiệu dài để chia if nx>nh b=h;nb=nh; a=[zeros(1,nh-1) x];Thêm không điểm vào đầu na=nx+nh-1; else b=x;nb=nx; a=[zeros(1,nx-1) h];Thêm không điểm vào đầu na=nh+nx-1; end; if nargin> new_conv(a,b) ans = Columns through 14 3.0000 10.0000 22.0000 40.0000 65.0000 98.0000 119.0000 140.0000 161.0000 182.0000 190.0000 184.0000 163.0000 126.0000 Column 15 72.0000 >> conv(a,b) ans = 10 22 40 65 98 119 140 161 182 190 184 163 126 72 %%Kết hài hàm giống EXERCISE 5.2:Crossover Point A,B,C Ta khởi tạo tín hiệu ngẫu nhiên có chiều dài biến thiên khoảng từ 80 đến 800.Khoảng thay đổi tùy theo tốc độ máy tính.Chương trình thử nghiệm đo tốc độ hàm new_conv ta vừa viết với hàm conv MATLAB sau: for i=80:800 x=1.8e+20*randn(1,i)+7*j; % tạo tín hiệu ngẫu nhiên x y=1.8e+20*randn(1,i)+8*j; % Tạo tín hiệu ngẫu nhiên y tic;conv(x,y);t1(i-79)=toc; %Tính thời gian hàm conv tic;new_conv(x,y);t2(i-79)=toc; %Tính thời gian hàm new_ conv end; D.Vẽ đồ thị thời gian thự hàm để xác định lúc hàm ta viết tỏ hiệu n=80:800; >> plot(n,10000*t1,n,10000*t2); Nhìn đồ thị ta thấy đồ thị cắt điểm lũy thừa 2(các điểm cắt N=128,256,512.Khi chiều dài tín hiệu gần đến lũy thừa thời gian tính toán tăng đột ngột.Nhưng đến lũy thừa thời gian tinh toán giảm đến mưc thấp nhất.Vì độ dài nhỏ hàm conv nhanh với độ dài lớn hàm new_conv tỏ nhanh rõ rệt E.Kiểm tra với đầu vào tín hiệu thực Nếu đầu vào tín hiệu thực DFT chúng tín hiệu liên hợp đối xứng Chính để tính IFFT nhanh ta mặc định tín hiệu vào ‘symmetric’.Một chỉnh sửa nhỏ hàm new_conv ta hàm Đặt tên hàm new_conv2 Đoạn code MATLAB sau: %%%%%%%%%%%%%% %Đầu vào tín hiệu cần nhân chập chiều dài FFT ta sử dụng %Đầu tín hiệu y chập tuyến tính cần tìm function y=new_conv2(x,h,N) nx=length(x); nh=length(h); if nx>nh b=h;nb=nh; a=[zeros(1,nh-1) x]; na=nx+nh-1; else b=x;nb=nx; a=[zeros(1,nx-1) h]; na=nh+nx-1; end; if nargin> tic;conv(a,a);t1=toc t1 = 32.7045 >> tic;new_conv(a,a);t2=toc t2 = 0.1343 >> tic;new_conv2(a,a);t3=toc T3 = 0.1099 %%Nhận thấy hàm new_conv2 nhanh hàm conv khoảng 300 lần! EXERCISE 5.3:Compare with FIR Filtering A,B: Khởi tạo tín hiệu h lọc x đầu vào.Để công nên khởi tạo tín hiêu phức ngẫu nhiên %%%%%%%%%% clear Lh=40; Lx=200000; h=rand(1,Lh)+i*rand(1,Lh); x=rand(1,Lx)+i*rand(1,Lx); %%%%%%%%%%% C:Sử dụng hàm new_conv2 để tính chập Ta đươc kết MATLAB sau: %%%%%%%%%%%%%%%%%%% clear Lh=40; Lh=200000; h=rand(1,Lh)+i*rand(1,Lh); x=rand(1,Lx)+i*rand(1,Lx); N=64;i=1; while N> n=log2(n) n= 10 11 12 13 14 15 16 17 >> plot(n,t1,n,t2) >> title('thoi gian thuc hien cua new_conv2 va conv'); >> xlabel('log2(N)'); >> ylabel('t'); >> 0.0328 0.0435 0.0479 0.0675 E.Nói chung với lọc có độ dài nhỏ so với độ dài tín hiệu vào nhận xét đúng.Với lọc có độ dài lớn so với đầu vào nhận xét không clear Lh=50000; Lx=200000; h=rand(1,Lh)+i*rand(1,Lh); x=rand(1,Lx)+i*rand(1,Lx); N=2^16;i=1; while N> Project 3: RESOLUTION EXERCISE 3.1:Definition of Resolution A.Khởi tạo vẽ phổ biên độ với tần số thay đổi Ta viết vòng lặp để thay đổi tần số quan sát phổ pha.Chương trình MATLAB sau: %%%%%%%%%% clear; A1=10; A2=10; n=0:63; L=64; q1=2*pi*rand(1,1); q2=q1 q2 = 3.8129 >> w1=1; >> w2=1; >> while (w2>0) w2=input('Nhap w2='); x1=A1*exp(j*(w1*n+q1)); x2=A2*exp(j*(w2*n+q2)); y=x1+x2; plot(n,abs(fft(y,64))); title('pho bien cua y[n]'); xlabel('n'); ylabel('A[n]'); end Nhap w2=2 Nhận thấy kết giống phần A ΔW nhỏ để đỉnh hợp lại thành giảm xuống ΔW=0.05 %%% clear; %%Trường hợp FFT 256 A1=10; A2=10; n=0:63; L=64; n=0:63; q1=3.8129; q2=q1; w1=1; w2=1; while (w2>0) w2=input('Nhap w2='); x1=A1*exp(j*(w1*n+q1)); x2=A2*exp(j*(w2*n+q2)); y=x1+x2; plot(0:255,abs(fft(y,256))); title('pho bien cua y[n]'); xlabel('n'); ylabel('A[n]'); end %%%%%%% %%Kết MATLAB sau: Nhap w2=1.5 Nhap w2=1.3 Nhap w2=1.1 Nhap w2=1.04 Nhận thấy kết giống phần A ΔW nhỏ để đỉnh hợp lại thành giảm xuống ΔW=0.04 Tóm lại để phân biệt đỉnh ΔW ≥ 2π /L EXERCISE 3.2:Peak Finding A,B.Viết hàm Peak Finding Hàm viết MATLAB sau: %%%%%%%%%% function [a,len]=peak_finding(y,n) x=diff(abs(y))./diff(n); k=1; for i=1:length(n)-2 if(x(i)>0&x(i+1)=max(abs(y))/2) a(k)=n(i+1);k=k+1; end end if(k==1) a=[]; end; if(nargout> y.*W; >> y=ans(1:64) y= Columns through 14 -26.1457 22.0108 -16.6929 11.0505 -5.9469 -11.6385 17.0760 -21.9823 25.5232 2.1383 -0.1752 0.3312 -2.5677 6.5392 Columns 15 through 28 -27.0092 25.9882 -22.3081 16.1420 -7.9718 -1.4667 11.2715 -20.4830 28.2001 -33.6896 36.4741 -36.3885 33.5970 -28.5695 Columns 29 through 42 22.0192 -14.8106 7.8491 -1.9662 -2.1855 -13.8443 15.5674 -15.1135 4.2128 -4.0296 1.8643 1.7736 -6.1625 10.4659 Columns 43 through 56 12.2413 -7.0268 -0.1404 8.6015 -17.5069 25.9199 -32.9315 37.7732 -39.9115 39.1150 -35.4821 29.4292 -21.6382 12.9721 Columns 57 through 64 -4.3673 -3.2817 9.2320 -12.9823 14.3315 -13.3987 10.6022 -6.6002 >> Y=fft(y); >> plot(0:63,abs(Y)); >> a=peak_finding(abs(Y),0:63) a= 28 30 34 36 %%%%%%%%%%%%% D.Kiểm tra với hàm cửa sổ Hamming clear N=64; n=0:63; W=0.54+0.46*cos(2*pi*n/(N-1)); y=20*exp(j*(2*n+3))+20*exp(j*(2.27*n+3)); y1=y.*W; Y1=fft(y1); plot(n,abs(Y1)) >> title('cua so Hamming'); >> xlabel('n'); >> ylabel('A'); >> a=peak_finding(abs(Y1),n); >> a a= 20 23 EXERCISE 3.3:Measure Resolution A.Hàm peak_finding ta vừa viết trả số lượng peak tín hiệu.Ta kiểm tra nó: %%%%%%%%%%% clear N=64; n=0:63; W=0.54+0.46*cos(2*pi*n/(N-1)); y=20*exp(j*(2*n+3))+20*exp(j*(2.27*n+3)); y1=y.*W; Y1=fft(y1); plot(n,abs(Y1)) >> title('cua so Hamming'); >> xlabel('n'); >> ylabel('A'); >> [a,l]=peak_finding(abs(Y1),n); >> a a= 20 23 >>l l= %%%%%%%% B.Viết script khởi tạo tín hiệu tính toán Chương trình viết MATLAB sau: %%%%%%%%%%%%% clear A1=10; A2=10; n=0:63; L=64; q1=3.8; q2=q1; delta=0; while delta> resolution Nhap delta=0.19 delta=0.19 Score=100 phantram Nhap delta=0.17 delta=0.17 Score=80 phantram Nhap delta=0.16 delta=0.16 Score=70 phantram Nhap delta=0.13 delta=0.13 Score=50 phantram Nhap delta=0.12 delta=0.12 Score=50 phantram Nhap delta=0.1 delta=0.1 Score=30 phantram Nhap delta=0.09 delta=0.09 Score=10 phantram Nhap delta=0.08 delta=0.08 Score=10 phantram Nhap delta=0.06 delta=0.06 Score=0 phantram Nhap delta=0.05 delta=0.05 Score=0 phantram Nhap delta=0.04 delta=0.04 Score=0 phantram Nhap delta=0.03 delta=0.03 Score=0 phantram Nhap delta=0.2 delta=0.2 Score=100 phantram >> %%%%%%%%%%%% C Nhận thấy ΔW tiến gần đến 4π /L=0.19 score =100% Khi ΔW=32 k=1;clear m;clear p;clear n; L=input('Nhap L=');n=0:L-1; if L1 plot(m,p); title('do thi score theo delta '); >> xlabel('delta'); >> ylabel('score'); end end Chạy hàm Window Command ta kết sau: %%%%%%% resolution1('chunhat') Nhap L=64 Nhap delta=0.19 delta=0.19 Score=100 phantram Nhap delta=0.18 delta=0.18 Score=90 phantram Nhap delta=0.17 delta=0.17 Score=90 phantram Nhap delta=0.16 delta=0.16 Score=40 phantram Nhap delta=0.15 delta=0.15 Score=40 phantram Nhap delta=0.14 delta=0.14 Score=30 phantram Nhap delta=0.12 delta=0.12 Score=30 phantram Nhap delta=0.11 delta=0.11 Score=30 phantram Nhap delta=0.1 delta=0.1 Score=30 phantram Nhap delta=0.09 delta=0.09 Score=10 phantram Nhap delta=0.08 delta=0.08 Score=30 phantram Nhap delta=0.07 delta=0.07 Score=0 phantram Nhap delta=0.06 delta=0.06 Score=0 phantram %% Trường hợp L=128; %%%% clear >> resolution1('chunhat') Nhap L=128 Nhap delta=4*pi/128 delta=0.0981748 Score=100 phantram Nhap delta=0.09 delta=0.09 Score=100 phantram Nhap delta=0.08 delta=0.08 Score=70 phantram Nhap delta=0.075 delta=0.075 Score=70 phantram Nhap delta=0.07 delta=0.07 Score=30 phantram Nhap delta=0.065 delta=0.065 Score=50 phantram Nhap delta=0.06 delta=0.06 Score=30 phantram Nhap delta=0.055 delta=0.055 Score=30 phantram Nhap delta=0.05 delta=0.05 Score=40 phantram Nhap delta=0.045 delta=0.045 Score=30 phantram Nhap delta=0.04 delta=0.04 Score=0 phantram Nhap delta=0.035 delta=0.035 Score=0 phantram D.kiểm tra với hàm cửa sổ hamming,hanning %%Cửa sổ hamming clear >> resolution1('hamming') Nhap L=64 Nhap delta=0.19 delta=0.19 Score=100 phantram Nhap delta=0.18 delta=0.18 Score=90 phantram Nhap delta=0.17 delta=0.17 Score=90 phantram Nhap delta=0.16 delta=0.16 Score=80 phantram Nhap delta=0.15 delta=0.15 Score=80 phantram Nhap delta=0.14 delta=0.14 Score=30 phantram Nhap delta=0.13 delta=0.13 Score=40 phantram Nhap delta=0.12 delta=0.12 Score=30 phantram Nhap delta=0.11 delta=0.11 Score=20 phantram Nhap delta=0.1 delta=0.1 Score=40 phantram Nhap delta=0.09 delta=0.09 Score=0 phantram Nhap delta=0.08 delta=0.08 Score=0 phantram Nhap delta=1 %%Cửa sổ hanning %%%%%%% clear >> resolution1('hanning') Nhap L=64 Nhap delta=0.19 delta=0.19 Score=90 phantram Nhap delta=0.18 delta=0.18 Score=80 phantram Nhap delta=0.17 delta=0.17 Score=100 phantram Nhap delta=0.16 delta=0.16 Score=100 phantram Nhap delta=0.15 delta=0.15 Score=80 phantram Nhap delta=0.14 delta=0.14 Score=20 phantram Nhap delta=0.13 delta=0.13 Score=20 phantram Nhap delta=0.12 delta=0.12 Score=20 phantram Nhap delta=0.11 delta=0.11 Score=30 phantram Nhap delta=0.1 delta=0.1 Score=20 phantram Nhap delta=0.09 delta=0.09 Score=10 phantram Nhap delta=0.08 delta=0.08 Score=0 phantram Nhap delta=0.07 delta=0.07 Score=0 phantram

Ngày đăng: 10/08/2016, 11:09

TỪ KHÓA LIÊN QUAN

w