Function x n stepseq n0 n1 n2 là gì

  • TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
  • Forex Arcanum - System Manual
  • Nguyễn Thu Trang Đ Hnntq 2
  • 207922 d4091722 t1590l0
  • TH2 - ôn tập tin học
  • 1.Đồ án Thiết kế phân xưởng sản xuất nước ép dứa dạng trong với năng suất 2 triệu lít năm 957362

Preview text

Trang 1

BÀI 1: TÍN HIỆU VÀ HỆ THỐNG RỜI RẠC

1. PHẦN MỀM MATLAB

1 KHỞI ĐỘNG MATLAB

Matlab(Matrix laboratory) là phần mềm dùng để giải các bài toán

kỹ thuật, đặc biệt là các bài toán liên quan đến ma trận. Matlab

cung cấp các Toolbox, tức các hàm mở rộng môi trường Matlab

để giải quyết các vấn đề cơ bản như xử lý tín hiệu số, hệ thống

điều khiển, mạng neuron, fuzzy logic, mô phỏng v. v.

Cửa sổ biểu tượng của chương trình Matlab:

Hình 1 – Cửa sổ khởi động Matlab

Cửa sổ làm việc của Matlab:

Hình 1 – Cửa sổ làm việc của Matlab

  • Cửa sổ lệnh(Command window): Là cửa sổ giao tiếp chính của Matlab bởi đây là nơi

nhập giá trị các biến, hiển thị giá trị, tính toán giá trị của biểu thức, thực thi các hàm có sẵn

trong thư viện hoặc các hàm do người dung lập trình ra trong M-files. Các lệnh được nhập

sau dấu nhăc ‘>>’ và thực thi lệnh bằng phím enter. Để mở chương trình soạn thảo trong

Matlab, gõ lệnh:

edit

Trang 2

  • Cửa sổ Edit: Là cửa sổ dùng để soạn

thảo chương trình ứng dụng, được khởi

động bằng lệnh edit trong Command

window. Chương trình soạn thảo trong cửa

sổ edit có hai dạng:

  • Dạng Script file: tập hợp các câu lệnh viết

dưới dạng liệt kê, không có biến dữ liệu vào

và biến ra.

  • Dạng function: Có biến dữ liệu vào và

biến ra.

Hình 1 – Cửa sổ edit để soạn script hay function

  • Cửa sổ Command History: Các dòng đã nhập trong Command window được giữ lại trong

cửa sổ Command History và cửa sổ này cho phép ta sử dụng lại những lệnh đó bằng cách

nhấp đúp chuột lên các lệnh hay biến đó.

  • Cửa sổ Workspace: Là cửa sổ thể hiện tên biến các biến bạn sử dụng cùng với kích thước

vùng nhớ(số byte), kiểu dữ liệu(lớp), các biến được giải phóng sau mỗi lần tắt chương trình.

Cửa sổ Workspace cho phép thay đổi giá trị của biến bằng cách nhấn phím chuột phải lên

các biến và chọn Edit.

1 CÁC VẤN ĐỀ CƠ BẢN

1.2 Các phép toán và toán tử

Các phép toán : +, - , *,/,(chia trái), ^(mũ),’(chuyển vị hay số phức liên hợp).

Các phép toán quan hệ: <, <=, >,>=, ==, `~=

Các toán tử logic: &, |(or), ~(not)

Chú ý:

  • Các lệnh kết thúc bằng dấu chấm phẩy, Matlab sẽ không thể hiện kết quả trên màn hình.
  • Các chú thích được đặt phía sau dấu %. Trong quá trình nhập nếu các phần tử trên một

hàng dài quá ta có thể xuống dòng bằng toán tử ba chấm(...)

1.2 Khai báo biến

  • Phân biệt chữ hoa và chữ thường, Không cần phải khai báo kiểu biến
  • Tên miền bắt đầu bằng các ký tự và không có khoảng trắng. Không đặt tên trùng với

các tên đặc biệt của Matlab.

  • Để khai báo biến toàn cục(sử dụng được trong tất cả các chương trình con), phải dùng

khóa global phía trước.

1.2.2 Toán tử ‘’ : ’’

Toán tử ‘’ : ’’ là một toán tử quan trọng của Matlab. Nó xuất hiện ở nhiều dạng khác nhau.

Biểu thức 1 :10 là một vector hàng chứa 10 số nguyên từ 1 đến 10.

Trang 4

Hàm plot có các dạng khác nhau phụ thuộc vào các đối số đưa vào. Ví dụ nếu y là một vector

thì plot(y) tạo ra một đường quan hệ giữa các giá trị của y và chỉ số của nó. Nếu ta có 2 vector

x và y thì plot(x,y) tạo ra đồ thị quan hệ giữa x và

y.

t = 0:pi/100:2*pi;

y = sin(t);

plot(t,y); % Vẽ hình sin từ 0 - >2

grid on

Hình 1 – Đồ thị hình sin

1.3 Kiểu đường vẽ

Ta có thể dùng các kiểu đường vẽ khác nhau khi vẽ hình.

t = [0:pi/100:2*pi];

y = sin(t)

plot(t,y,’.’) % vẽ bằng đường chấm chấm

Để xác định màu và kích thước đường vẽ, ta dùng tham số sau :

Màu được xác định bằng các tham số :

Các dạng đường thẳng xác định bằng :

Các dạng điểm đánh dấu xác định bằng :

Trang 5

x = - pi : pi/10 : pi;

y = tan(sin(x)) - sin(tan(x));

plot(x,y,ʹ‐‐rs’,ʹLineWidthʹ,2,ʹMarkerEdgeColorʹ,ʹkʹ,...

ʹMarkerFaceColorʹ,ʹgʹ,ʹMarkerSizeʹ,10)

Để vẽ hai hàm trên cùng một đồ thị, ta dùng lệnh :

hold on

1.3 Vẽ với hai trục y

Hàm plotyy cho phép tạo một đồ thị có hai trục y. Ta cũng có thể dùng plotyy để cho giá trị

trên hai trục y có kiểu khác nhau nhằm tiện so sánh.

t = 0 :900 ; A = 1000 ; b =0 ; a = 0 ;

z2 = sin(bt) ; z1 = Aexp(-a*t) ;

[haxes, hline1, hline2] = plotyy(t,z1,t,z2, ‘semilogy’, ‘plot’);

1.3 Vẽ đường cong 3-D

Nếu x,y,z là ba vector có cùng độ dài thì plot3 sẽ vẽ đường cong 3D.

t = 0:pi/50:10*pi;

plot3(sin(t),cos(t),t)

axis square;

grid on

Vẽ nhiều trục tọa độ

Dùng hàm subplot để vẽ nhiều trục tọa độ.

subplot(2,3,5) %2,3: xác định có 2 hàng, 3 cột

% 5: chọn trục thứ 5 (đếm từ trái sang phải, trên xuống dưới)

Ví dụ :

x = linspace(1,2*pi); y1 = sin(x);y2 = cos(x);

y3 = 2.*exp(-x).*sin(x);

x1 = linspace(-2pi,2pi);

y4 = sinc(x1);

subplot(221);plot(x,y1);

title(&

039;Ham y = sinx&

039;);

subplot(222);plot(x,y2);

title(&

039;Ham y = cosx&

039;);

subplot(223);plot(x,y3);

title(&

039;Ham y = 2e^{-x}sinx&

039;);

subplot(224);plot(x1,y4);

title(&

039;Ham y =

sinπxπx{sin\pi x \over\pi x}

&

039;,&

039;interpreter&

039;,&

039;latex&

039;);

1.3.5 Giới hạn của trục và chia vạch trên trục

Trang 7

Thực thi chương trình trên bằng cách nhấn phím F5, hoặc nhấn vào biểu tượng Run, hoặc

trong Command window bằng dòng lệnh sau:

hinhsin

1.4 File hàm

Hàm là M-file có chứa các đối số. Ta có một ví dụ hàm xây dựng hàm gptb2 để giải

phương trình bậc 2: ax

2

  • bx + c = 0. Nội dung hàm như sau:

function [x1,x2]=gptb2(a,b,c)

if nargin <

error(&

039;Error! Nhap 3 he so cua phuong trinh&

039;)

elseif a==

x1=-c/b; x2=[];

else

delta = b^2 - 4ac;

x1 = (-b+sqrt(delta))/(2a); x2 = (-b-sqrt(delta))/(2a);

end

Từ ví dụ trên ta thấy một hàm M-file gồm các phần tử cơ bản sau :

  • Một dòng định nghĩa hàm : fuction y = gptb2(x) gồm các từ khóa function, đối số trả về

y, tên hàm gptb2 và đối số vào x.

  • Thân hàm chứa mã Matlab.
  • Các lời giải thích dùng để cho chương trình rõ ràng. Nó được đặt sau dấu %. Cần lưu ý là

tên hàm phải bắt đầu bằng ký tự và cùng tên file chứa hàm. Tên hàm là gptb2 thì tên file

cũng là gptb2.

Lưu ý rằng trong một tên file có thể có nhiều hàm nhưng hàm đầu tiên phải có tên trùng

với tên file.

Kiểm tra kết quả :

[x1,x2]=gptb2(1,6,-7)

[x1,x2]=gptb2(0,4,3)

[x1,x2]=gptb2(1,6)

gptb2(2,7,14)

Các hàm toán học cơ bản

exp(x) hàm mũ cơ số e

sqrt(x) căn bậc hai của x

log(x) logarit cơ số e

log10(x) logarit cơ số 10

abs(x) module của số phức x

angle(x) argument của số phức x

imag(x) phần ảo của x

real(x) phần thực của x

sign(x) dấu của x

Trang 8

II. TÍN HIỆU RỜI RẠC THỜI GIAN

2 CÁC DÃY SỐ CƠ BẢN

  1. Dãy xung đơn vị.

(n)= 𝛿

(

𝑛 − 𝑛

0

)

\= {

1 𝑛 = 𝑛

0

0 𝑛 ≠ 𝑛

0

Trong Matlab để tạo dãy xung đơn vị bằng cách gõ các dòng lệnh vào cửa sổ soạn thảo

( Editor ) và lưu lại thành file “impseq” như sau:

function [x,n] = impseq(n0,n1,n2)

% tao ra day x(n) = delta(n-n0); n1 <= n0,n0 <= n

if ((n0 < n1) | (n0 > n2) | (n1 > n2))

error(&

039;arguments must satisfy n1 <= n0 <= n2&

039;)

end

n = [n1:n2];

x = [(n-n0) == 0];

Trên cơ sở xây dựng được hàm impseq chúng ta mô phỏng tín hiệu dãy xung đơn vị như

sau:

% Phát một dãy xung đơn vị

% tạo vector từ - 5 đến 10

n= [-5 :10];

% phát ra dãy xung đơn vị

x = impseq(0,-5,10);

% vẽ ra dãy xung

stem(n,x);xlabel(‘chi so thoi gian n’);

ylabel(‘Bien do’);

Đồ thị mô phỏng được thể hiện như hình 2.

  1. Dãy nhảy đơn vị (Dãy bậc đơn vị).

u(n) = 𝑢

(

𝑛 − 𝑛

0

)

\= {

1 𝑛 ≥ 𝑛

0

0 𝑛 < 𝑛

0

Tạo dãy nhảy xung đơn vị theo chương trình mẫu bằng cách gõ các dòng lệnh cho ở bảng

dưới đây. Vào của sổ soạn thảo ( Editor ) và lưu lại thành file “stepseq”.

function [x,n] = stepseq(n0,n1,n2)

% tao ra day x(n) = u(n-n0); n1 <= n0,n0 <= n

if ((n0 < n1) | (n0 > n2) | (n1 > n2))

error(&

039;arguments must satisfy n1 <= n0 <= n2&

039;)

end

n = [n1:n2];

\=

0 0

1 0

n

n

0 0

1 0

n 

n

Hình 2 - Dãy xung đơn vị

Trang 10

xlabel(‘chi so thoi gian n’);ylabel(‘Bien do’);

title(&

039;day ham sin x ‘);

Đồ thị được biểu diễn như hình vẽ 2.

2. 2. MỘT SỐ PHÉP TOÁN DÃY SỐ

  1. 2 .1. Trễ(dịch)

y(n) = x(n – n0)

Trong Matlab phép toán này được thực hiện bởi hàm sigshift được định nghĩa như sau:

function [y,n] = sigshift(x,m,n0)

% ham dich chuyen y[n] = x(n - n0);

n = m + n0; y = x;

2.2 Phép đảo(Phép chuyển vị)

Phép toán này được thực hiện bằng cách thay đổi dấu của đối số của tín hiệu đó:

y(n) = x(- n) với mọi n.

Trong Matlab phép toán này được thực hiện bởi hàm sigfold được định nghĩa như sau:

function [y,n] = sigfold(x,n)

% thuc hien y(n) = x(-n)

y = fliplr(x); n = - fliplr(n);

2.2 Tổng của hai dãy.

Để thực hiện phép cộng trong Matlab thì các dãy phải có cùng chiều dài, trong trường hợp

các dãy có chiều dài khác nhau thì trước hết phải tăng một số mẫu có giá trị bằng không để

các dãy có cùng độ dài. Việc này thực hiện được nhừ toán tử giao “&” và các toán tử “<=” ;

“==”; hàm find khi đó hàm số sigadd minh họa toán tử đó như sau:

function [y,n] = sigadd(x1,n1,x2,n2) %thuc hien y(n) = x1(n)+x2(n)

n=min(min(n1),min(n2)):max(max(n1),max(n2));

y1=zeros(1,length(n)); y2 = y1; % khoi tao

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 voi chi so cua y(n)

y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 voi chi so cua y(n)

y=y1+y2;

Trang 11

Ví dụ 2. 3

Giả sử x(n) = {1;2;3;4;5;6;7;6;5;4;3;2;1}

Hãy xác định và vẽ các dãy sau đây:

  1. x1(n) = x(n-3); x2(n) = x(n+2);
  1. x3(n) = 2(n-3)-3 x(n+2) ;

n = [0:12]

x = [1:1:7,6:-1:1]

[x1,n1] = sigshift(x,n,3);

[x2,n2] = sigshift(x,n,-2);

[x3,n3] = sigadd(2.*x1,n1,-3.*x2,n2);

subplot(4,1,1);stem(n,x);grid;

subplot(4,1,2);stem(n1,x1);grid;

subplot(4,1,3);stem(n2,x2);grid;

subplot(4,1,4);stem(n3,x3);

Đồ thị được biễu diễn như hình 2. 9.

2.2 Tích của hai dãy.

Trong Matlab phép toán này được thực hiện nhờ toán tử mảng(array). Ngoài ra nó còn được

thực hiện nhờ hàm Matlab sigmult được định nghĩa như sau:

function [y,n] = sigmult(x1,n1,x2,n2) % thuc hien y(n) = x1(n) * x2(n)

n = min(min(n1),min(n2)):max(max(n1),max(n2));

y1 = zeros(1,length(n)); y2 = y1;

y1 (find((n>=min(n1))&(n<=max(n1))==1)) =x1;

y2 (find((n>=min(n2))&(n<=max(n2))==1)) =x2;

y = y1.*y2;

Ví dụ 2. 4

Giả sử x(n) = {1;2;3;4;5;6;7;6;5;4;3;2;1}

Hãy xác định và vẽ các dãy sau đây:

  1. x1(n) = x(n - 5); x2(n) = x(n + 4);
  1. x3(n) = x1(n). x2(n) )

n = [0:12] ; x = [1,2,3,4,5,6,7,6,5,4,3,2,1]

[x1,n1] = sigshift(x,n,5); [x2,n2] = sigshift(x,n,-4);

[x3,n3] = sigmult(x1,n1,x2,n2);

subplot(4,1,1);stem(n,x);title(&

039;tin hieu ban dau&

039;);grid;

subplot(4,1,2);stem(n1,x1);title(&

039;tin hieu x1&

039;);grid;

subplot(4,1,3);stem(n2,x2);title(&

039;tin hieu x2&

039;);grid;

subplot(4,1,4);stem(n3,x3); title(&

039;tin hieu x3&

039;);grid;

Đồ thị được biễu diễn như hình 2 0.

Hình 2.

Hình 2 - Tổng của hai dãy

Trang 13

clear all;

n = 0:40;

a = [1 0 0 - 0];

b = [1 2 2];

h = impz(b,a,n+1);

stem(n,h);title(&

039;dap ung xung cua he thong&

039;);

Đồ thị được biễu diễn như hình 2. 14.

  1. Ghép nối tiếp các hệ thống LTI

Trong thực tế, người ta thường ghép nối tiếp các hệ thống LTI nhân quả bậc thấp với nhau

để được các hệ thống bậc cao. Chẳng hạn, người ta ghép hai hệ thống bậc 2 có phương trình

sai phân:

Hình 2 - Sơ đồ ghép nối hai hệ thống

1 1 1

y ( )n + 0,9 y ( n − 1) + 0,8 y ( n − 2) = 0,3 ( )x n − 0,3 (x n −1) + 0, 4 (x n −2)

2 2 2 1 1 1

y ( )n + 0,7 y ( n −1) + 0,85 y ( n − 2) = 0, 2 y ( )n − 0,5 y ( n − 1) + 0,3 y ( n−2)

Xét ví dụ mô phỏng hệ thống nối tiếp hai hệ thống bậc 2 giữa hai hệ thống trên. Trong chương

trình này, tín hiệu x(n) là tín hiệu kích thích của hệ thống ghép nối.

Ví dụ 2.

x = stepseq(0,0,40);n=[0:40];

a1 = [1 0 0]; b1 = [0 - 0 0];

a2 = [1 0 0]; b2 = [0 - 0 0];

y1 = filter(b1,a1,x); % Tinh tin hieu ra y1(n)

y2 = filter(b2,a2,y1);

subplot(3,1,1)stem(n,x);title(&

039;tin hieu loi vao&

039;);

axis([-5 40 - 0 1 ]);grid;xlabel(&

039;n&

039;);ylabel(&

039;x(n)&

039;);

subplot(3,1,2);stem(n,y1);

title(&

039;tin hieu dau ra he thong thu nhat&

039;);

axis ([-5 40 - 1 1]);grid;xlabel(&

039;n&

039;);ylabel(&

039;y1(n)&

039;);

subplot(3,1,3); stem(n,y2);title(&

039;tin hieu dau ra&

039;);

axis([-5 40 - 1 1]);grid;xlabel(&

039;n&

039;);ylabel(&

039;y(n)&

039;);

Đồ thị mô phỏng ở hình vẽ 2. 16.

2 BÀI TẬP THỰC HÀNH

Bài 1: Viết chương trình và vẽ dạng tín hiệu hàm u(n-3), u(n+2), rect 3

(n-2); (n+1) với n [-

10;10]

Bài 2: Viết chương trình thể hiện trên đồ thị kết quả phép tính tích chập giữa hai dãy:

Hình 2. 16. Mô phỏng ví dụ 2.

Hình 2. 14 Đáp ứng xung của hệ thống

Trang 14

Bài 3: Xét hệ thống có phương trình sai phân: y(n) = 0(n) + 0(n - 1) - 0(n - 2) -

0(n - 1) + 0(n - 2).

  1. Xác định đáp ứng xung đơn vị của hệ thống.
  1. Tìm đầu ra của hệ thống khi biết đầu vào 𝑥

(

𝑛

)

\= {

2 𝑣ớ𝑖 𝑛 = − 2

𝑛 + 1 𝑣ớ𝑖 − 1 ≤ 𝑛 ≤ 1

0 𝑛 𝑐ò𝑛 𝑙ạ𝑖

Bài 4: Xác định đáp ứng xung tương đương của hệ thống sau:

Hình 2 Sơ đồ ghép nối của bài 6

Viết chương trình xác định ngõ ra của hệ thống khi ngõ vào là x(n) = (-2)

n

u(n- 2 ).(Tính toán

cho giá trị n từ - 20 đến 20).