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 (3.52 MB, 17 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>MSSVLớp:Mã lớp:</b>
Hà Nội, 2/2023
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Trong bài thực hành này, ta sẽ sử dụng các câu lệnh liên quan đến gán, viết hàm, cấu trúc if…end, for…end, lệnh vẽ đồ thị, vẽ nhiều đồ thị, phép toán sử dụng biến tượng trưng.
Đây là câu lệnh điều kiện. Ví dụ:
<b>x=input(‘ nhap x’);if x>0</b>
Câu lệnh trên thực hiện tính y=x+1 khi x>0.3. Câu trúc for…end
<b>for x = 1:10 y(x) = x^2;end</b>
Câu lệnh in ra vector y với các phân tử là x^2 khi x chạy từ 1,2,3,4,…,104. Vẽ đồ thị:
<b>syms xx=-10:0.01:10;y=x.^2;plot(x,y)</b>
Câu lệnh trên in ra đồ thị hàm y=x^25. Vẽ nhiều đồ thị:
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>N= length(t); y= zeros(1,N);for i=1:N </b>
<b>if t(i)>= -a y(i)=1endend</b>
Tương tự bài 1:
<b>function y= uramp(t,b) N= length(t);</b>
<b>y= zeros(1,N); for i=1:N </b>
<b>if t(i)>=-b y(i)= t(i)+b; end </b>
<b>a. Hàm 5u(t-2):t=-10:0.01:10; plot(t,5*ustep(t,-2))</b>
Câu lệnh này vẽ 1 phần của đồ thị hàm <b>5u(t-2)</b> với -10<x<10. Khi đó ta sẽ có đồ thị:
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>b. Hàm 3r(t +5):t=-10:0.01:10; plot(t,3*uramp(t,5))</b>
Câu lệnh vẽ 1 phần đồ thị hàm <b>3r(t+5)</b> với -10<x<10. Khi đó ta có đồ thị:
<b>c. Hàm y(t)= 2r(t+2,5)-5r(t) +3r(t-2) +u(t-4):t=-10:0.01:10; </b>
<b>plot(t,2*uramp(t, 2.5)-5*uramp(t,0)+3uramp(t,-2)+ustep(t,-4))</b>
<b>d. Hàm y(t)= sin(t)*[u(t+3)-u(t-3)]:</b>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>t=-10:0.01:10; </b>
<b>plot(t, sin(t).*(ustep(t,3) - ustep(t,-3)))</b>
<b>Từ đồ thị ta có thể xây dựng hàm: y=r(t+4)+r(t-4)-r(t)</b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">Sau khi xây dựng được hàm thì ta dùng lệnh <b>plot</b> đểvẽ đồ thị và lệnh <b>grid on</b> để tạo mắt lưới cho đồ thị
Sử dụng cách viết hàm và dạng của các phần chẵn lẻ, ta xây đựng được hàm:
<b>function [ye,yo] = evenodd(y) yr = fliplr(y); </b>
<b>ye = 0.5*(y + yr); </b>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>yo = 0.5*(y – yr); end</b>
<b><small>y(t)= 2r(t+2,5)-5r(t) +3r(t-2) +u(t-4)</small></b>
Sử dụng các kiến thức của các bài trên, ta xây dựng được chương trình:
<b>t=linspace(-10,10,500); </b>
<b>y=2*uramp(t, 2.5)-5*uramp(t,0)+3uramp(t,-2)+ustep(t,-4); evenodd(y); </b>
<b>yr=fliplr(y); ye=0.5*(y+yr); yo=0.5*(y-yr); plot(t,yo,'b--'); hold on; plot(t,ye,'r-'); xlabel('t'); ylabel('y'); </b>
<b>plot(t,y,'k-','linewidth',1) title('đồ thị hàm số y(t)'); legend(‘yo’,’ye’,’y’); grid on</b>
Khi đó đồ thị sẽ có dạng:
Trong đó đường màu đen là tín hiệu y, đường màu đỏ là phần tín hiệu chẵn, phần màu xanh nét đứt là phần tín hiệu lẻ.
Vẽ dạng của các tín hiệu sau trên đoạn −10 t 10 . Tín hiệu đó có phải là tín hiệu tuần hồn hay khơng? Nếu có, tìm chu kì của nó?
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Ở bài này ta có 2 cách để xác định xem tín hiệu có phải là tín hiệu tuần hồn hay khơng là vẽ đồ thị và tính thơng thường.
<b>a. x1(t) = 1+ 1,5cos(2πΩot)-0,6cos(4Ωot) với Ωo=π/10.</b>
Cách 1: Ta sẽ dùng lệnh <b>plot</b> để vẽ đồ thị của hàm số:
<b>t=linspace(-10,10,1000); </b>
<b>x1=1+1.5*cos(2*pi*pi*t/10)-0.6*cos(4*pi*t/10); plot(t,x1);</b>
Ta thu được đồ thị có dạng như trên. Dựa vào đồ thị ta có thể thấy rằng tín hiệu này khơng tuần hồn.
Cách 2: Làm bình thường:
<b>x1(t)= 1+ 1,5cos(2πΩot)-0,6cos(4Ωot) Đặt: y1=1,5cos(2πΩot) => T1=1/Ωo(s) y2=0,6cos(4Ωot) =>T2=π/2Ωo(s) </b>
<b>Mà: T1/T2=2/π khơng là số hữu tỉ. Nên tín hiệu khơng tuần hồnb. x2 = 1+1,5cos(6πt)-0,6cos(4Ωot) với Ωo=π/10.</b>
Tương tự ta cũng có 2 cách xác định.Cách 1: Ta dùng lệnh <b>plot</b> để vẽ hàm x2
<b>t =linspace(-10,10,1000); </b>
<b>x2=1+1.5*cos(6*pi*t)-0.6*cos(4*pi*t/10); </b>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Từ đồ thị ta có thể dễ dàng nhận ra rằng tín hiệu này là tín hiệu tuần hồn
<b>với chu kỳ To=5(s)</b>
Cách 2:
<b>Đặt: y3=1,5cos(6πt) => T3=1/3(s) y4=0,6cos(4Ωot) => T4=π/2Ωo=5(s) =>T3/T4=1/15 => T4=15T3=> To=T4=5(s)</b>
<b>Vậy tín hiệu tuần hồn với chu kỳ To=5(s)</b>
Năng lượng của một tín hiệu trong khoảng [-;] được định nghĩa là <b>E=</b>. Cơng suấtcủa nó thì được định nghĩa là <b>P=</b>. Tìm năng lượng và cơng suất của tín hiệu sautrên đoạn −10≤t≤ 10 bằng cách sử dụng công cụ biến tượng trưng của Matlab.
<b>x(t) = cos(2t)u(t).syms t</b>
<b>x(t)=exp(-t).*cos(2*pi*t).*u(t); f= (abs(x(t))).^2; </b>
<b>E= int(f , t , -T/2 , T/2) P= int(f , t , -T/2 , T/2)/T </b>
<b>E=(exp(-20)*(2*pi^2 +1)*(exp(20) -1))/(2*(4*pi^2 +1)) </b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>P=(exp(-20)*(2*pi^2 +1)*(exp(20) -1))/(40*(4*pi^2 +1))<small>V.</small></b>
Ở phần này, ta dùng lệnh <b>hold on </b>để vẽ nhiều đồ thị cùng một lúc
<b>t=-10:0.01:10; x=exp(-(abs(t))); x1=exp(-(abs(t-2))); x2=exp(-(abs(t+2))); plot(t,x,'b'); hold on; plot(t,x1,'k'); plot(t,x2,'r'); </b>
<b>legend('x(t)','x(t-2)','x(t+2)'); grid on</b>
<b>title('x(t)=exp(-|t|)'); </b>
<b>t=-10:0.01:10; x=exp(-(abs(t)));x1=exp(-(abs(2*t))); x2=exp(-(abs(0.5*t))); </b>
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><b>plot(t,x,'b'); hold on; plot(t,x1,'k'); plot(t,x2,'r'); </b>
<b>legend('x(t)','x(2t)','x(0,5t)'); grid on </b>
<b>t=-10:0.01:10; x=exp(-(abs(t))); x1=exp(-(abs(-t))); plot(t,x,'b'); hold on; plot(t,x1,'r'); legend('x(t)','x(-t)'); grid on </b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Từ bảng tần số các nốt nhạc ta có thể xây dựng các nốt nhạc và tùy chỉnh độ ngân ngắn dài của từng nốt. Ta có thể xây dựng các câu lệnh như sau:
<b>Fs=8000; t=[0:1/Fs:0.5]; Fc=262;Fd=294;Fe=330;Ff=349;Fg=392;Fa=440;Fb=494;Fj=0; </b>
<b>C=cos(2*pi*Fc*t); D=cos(2*pi*Fd*t); </b>
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><b>E=cos(2*pi*Fe*t); F=cos(2*pi*Ff*t); G=cos(2*pi*Fg*t); A=cos(2*pi*Fa*t); B=cos(2*pi*Fb*t); Si=cos(2*pi*Fj*t); </b>
<b>song=[C C G G A A G F F E E D D C ];</b>
<b>t = linspace(0,1,44100);F=494; </b>
<b>C=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.026 0.0045 0.002]; Th=[-2.13 1.67 -2.545 .661 -2.039 2.16 -1.0467 1.858 -2.39]; x = C*cos(2*pi*F*[1:9]'*t-Th'*ones(1,44100)); </b>
<b>subplot(211) </b>
<b>plot(t(1:200),x(1:200)) axis tight </b>
<b>grid on;</b>
<b>t = linspace(0,1,44100);F=494;</b>
<b>C=[0.1155 0.3417 0.1789 0.1232 0.0678 0.0473 0.026 0.0045 0.002]; Th=zeros(1,9); x = C*cos(2*pi*F*[1:9]'*t-Th'*ones(1,44100)); sound(x,44100); </b>
<b>subplot(211), plot(t(1:200),x(1:200)) grid on;</b>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>Nhận xét: Sau khi đổi các pha thành 0, tín hiệu âm thanh thu được có đồ thị âm</b>
thay đổi, tuy nhiên âm thanh nghe được bằng tai người khơng đổi.
[data,Fs]=audioread('female_voice.wav'); data=data(:,1)';
Ts=1/Fs; sound(data,Fs); t=[-10:Ts:10]; wb=1500*2*pi;
ht=wb/(2*pi)*sinc(wb*t/(2*pi)); y=conv(data,ht,'same'); y=y/max(abs(y)); sound(y,Fs);
<b>1. Tự tạo các hàm.%FourierTransform.m</b>
function [f,X]=FourierTransform(t,x) ns=size(x,2);
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">dt=t(2)-t(1); N=2*ns; df=1/(N*dt);xp=zeros(1,N); nns=sum(t<0);
xp(1:ns-nns)=x(nns+1:ns); xp(N-nns+1:N)=x(1:nns); Xf=dt*fft(xp); n2=ceil(N/2); if n2==N/2;
X(1:n2-1)=Xf(n2+2:N); X(n2:N)=Xf(1:n2+1); f=(-n2+1)*df:df:n2*df; no=n2;
else ; X(1:n2-1)=Xf(n2+1:N); X(n2:N)=Xf(1:n2);f=(-n2+1)*df:df:(n2-1)*df;
function [t,x]=IFourierTransform(f,X) ns=length(X);
df=f(2)-f(1); N=ns; dt=1/(N*df); Xp=zeros(1,N); Xp(1:ns)=X; nns=sum(f<0);
if n2==N/2; x(1:n2-1)=xf(n2+2:N); x(n2:N)=xf(1:n2+1);
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">else; x(1:n2-1)=xf(n2+1:N); x(n2:N)=xf(1:n2);t=(-n2+1)*dt:dt:(n2-1)*dt;
Câu hỏi 1: Chạy chương trình main.m và nhận xét về đồ thị thời gian của tínhiệu điện tim và phổ của nó.
• Tín hiệu điện tim là tín hiệu tuần hồn
• Nhiễu tập trung ở quanh vùng f=0 Hz, nhiễu cũng có ở vùng f tần sốcao
Câu hỏi 2: Nhận xét về bộ lọc đã dùng • Bộ lọc đã dùng là bộ lọc thơng thấp
• Vùng tần số bộ lọc cho đi qua là từ 0 Hz đến 100 Hz
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Câu hỏi 3: Nhận xét về tác dụng của bộ lọc
Bộ lọc có tác dụng khử nhiễu tần số cao trong máy ghi điện tim, ở Hình 3nhiễu đã giảm so với Hình 1
</div>