Tải bản đầy đủ (.pdf) (40 trang)

Báo cáo thực hành matlab cơ bản

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 (293.14 KB, 40 trang )

Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

BÁO CÁO THỰC HÀNH MATLAB CƠ BẢN
1. Làm quen Matlab
1.1. Tính bằng tay các biểu thức sau, rồi thử lại bằng Matlab:
a. 2/2 * 3 = 3
f. 2 + round(6/9 + 3*2) / 2 – 3 = 2.5
>>2/2 * 3
>>2 + round(6/9 + 3*2)/2 - 3
ans =
ans =
3
2.5000
b. 6 – 4/2 + 7^2 – 1 = 52
g. 2 + floor(6/9 + 3*2) / 2 – 3 = 2
>>6 - 4/2 + 7^2 - 1
>>2 + floor(6/9 + 3*2)/2 - 3
ans =
ans =
52
2
c. 10/2 \ 10 – 3 + 2*4 =7
h. 2 + ceil(6/9 + 3*2) / 2 – 3 = 2.5
>> 10/2 \ 10 - 3 + 2*4
>>2 + ceil(6/9 + 3*2)/2 - 3
ans =
ans =
7
2.5000


d. 3^2 / 6 = 1.5
k. fix(4/9) + fix(3*(5/6)) = 2
>> 3^2 / 6
>> fix(4/9) + fix(3*(5/6))
ans =
ans =
1.5000
2
e. 3^2^2 = 81
>> 3^2^2
ans =
81
1.2. Dự đoán kết quả xuất ra màn hình:
a. 2 ; 4
>> 2 ; 4
ans =
4
b. 2/4 = 0.5
>> 2 / 4
ans =
0.5000

Báo cáo thực hành Matlab cơ bản

1

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông


c. 2\4 = 2
>> 2\4
ans =
2
d. 2 , 4
>> 2 , 4
ans =
2
ans =
4
e. 2:4
>> 2:4
ans =
2

3

GVHD: Nguyễn Mạnh Cường

4

1.3. Cho x = 2, y = 3. Dự đoán lần lượt các kết quả tiếp theo:
c. x = y + x – z
a. z = x
>> z = x
>> x = y + x - z
z =
x =
2

5
b. y = y +z
d. x + y – z
>> y = y +z
>> x + y - z
y =
ans =
5
8
1.4. Giải phương trình bậc hai sau bằng cách thực hiện từng bước, sau đó kiểm tra
với hàm trong Matlab:
2
a. x − 3x + 2 = 0

a = 1; b = −3;c = 2

∆ = b 2 − 4ac = 1
=> x1 =

−b − ∆
−b + ∆
= 1; x 2 =
=2
2a
2a

Báo cáo thực hành Matlab cơ bản

2


Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

Kiểm tra bằng Matlab:
>> p =[1 -3

2];

KQ = roots(p)
KQ =
2
1

b. x 2 − x + 2 = 0
a = 1; b = −1; c = 2
∆ = b 2 − 4ac = −7

=> x1 =

−b − ∆
−b + ∆
= 0.5 - 1.3229i ; x2 =
= 0.5 + 1.3229i
2a
2a


Kiểm tra bằng Matlab:
>> p =[1 -1

2];

KQ = roots(p)
KQ =
0.5000 + 1.3229i
0.5000 - 1.3229i

1.5.

a. Tạo một số ngẫu nhiên có giá trị từ 0 đến 1
>> a = rand
a =
0.9501

b. Tạo một số ngẫu nhiên có giá trị từ 0 đến 100
>> b = 100*rand
b =
23.1139

c. Tạo một số ngẫu nhiên có giá trị từ n đến m (n>> n = input ('Nhap n = ')
m = input ('nhap m = ')
KQ = n + (m-n)*rand
Nhap n = 5
Báo cáo thực hành Matlab cơ bản

3


Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

n =
5
nhap m = 9
m =
9
KQ =
6.9439

1.6. Giải các phương trình sau
4
2
b. 3 x − 3 x + x − 1 = 0

a. x − 3 x + 1 = 0
>> p = [1 0 -3 1];
KQ = roots(p)
KQ =
-1.8794
1.5321
0.3473
3


>> p = [3 0 -3 1 -1];
KQ = roots(p)
KQ =
-1.2229
1.0000
0.1114 + 0.5101i
0.1114 - 0.5101i

1.7. Cho a = 36, b = 15. Tính bằng tay các biểu thức sau, rồi thử lại bằng Matlab
a. mod(a,b)
>> mod(a,b) %Chia lay phan du
ans =
6
b. rem(a,b)
>> rem(a,b) %Chia lay phan du
ans =
6
c. gcd(a,b)
>> gcd(a,b) %Uoc chung lon nhat
ans =
3
d. lcm(a,b)
>> lcm(a,b) %Boi chung nho nhat
ans =
180

Báo cáo thực hành Matlab cơ bản

4


Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

2. Vector
2.1. Tạo một vector chứa các số nguyên từ 31 đến 75
>> A = 31:75
Tạo một vector có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng
[0, 100]
>> B = round(100*rand(1,10))
B =
95
23
61
49
89
76
46
2
82
44
Tạo một vector có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng
[-20 ,10]
>> C = round(30*rand(1,10))-20
C =
-2
4

8
2 -15
-8
8
8
-8
7
2.2. Cho x = [3 1 5 7 9 2 6] dự đoán kết quả các dòng lệnh sau và thử lại bằng Matlab:
a. x(3)
>> x(3)
ans =
5
b. x(1:7)
>> x(1:7)
ans =
3
1
5
7
9
2
6
c. x(1:end)
>> x(1:end)
ans =
3
1
5
7
9

2
6
d. x(1:end-1)
>> x(1:end-1)
ans =
3
1
5
7
9
2
e. x(6:-2:1)
>> x(6:-2:1)
ans =
2
7
1
Báo cáo thực hành Matlab cơ bản

5

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

f. x([1 6 2 1 1])
>> x([1 6 2 1 1])

ans =
3
2
1
g. sum(x)
>> sum(x)
ans =
33

3

3

2.3. Cho x = [2 5 1 6]
a. Cộng thêm 16 vào tất cả các phần tử.
>> x+16
ans =
18

21

17

22

b. Cộng thêm 3 vào các phần tử ở vị trí lẻ.
>> x(1:2:end) = x(1:2:end) + 3
x =
5


5

4

6

c. Lấy căn bậc 2 tất cả các phần tử.
>> sqrt(x)
ans =
1.4142

2.2361

1.0000

2.4495

d. Bình phương tất cả các phần tử.
>> x.^2
ans =
4

25

1

Báo cáo thực hành Matlab cơ bản

36


6

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

2.4. Cho x, y lần lượt là các vector cột: x = [3 2 6 8]’ , y = [4 1 3 5]’
a. Lấy tổng các phần tử của x cộng thêm vào từng phần tử của y.
>> sum(x)+ y
ans =
23
20
22
24

b. Luỹ thừa mỗi phần tử của x với số mũ tương ứng là các phần tử của y.
>> x(:)= x.^y
x =
81
2
216
32768

c. Chia các phần tử của y với các phần tử tương ứng của x.
>> y./x
ans =
1.3333

0.5000
0.5000
0.6250

d. Nhân các phần tử của x với các phần tử tương ứng của y, đặt trong vector z.
>> z = x.*y
z =
12
2
18

Báo cáo thực hành Matlab cơ bản

7

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

40

e. Tính tổng các phần tử của z, gán cho w.
>> w = sum(z)
w =
72

f. Tính x .* y – w

>> x.*y - w
ans =
-60
-70
-54
-32

g. Tích vô hướng của x và y
>> sum(x.*y)
ans =
72

2.5. Tạo các vector x sau
a. [2, 4, 6, 8,…,2n]
>> n = input (' Nhap n = ')
x = 2:2:2*n
Nhap n = 4
n =
4
x =
2
4
6
8
b. [10, 8, 6, 4, 2, 0, -2, -4,…,-2n]
>> n = input (' Nhap n = ')
x2 = 10:-2:-2*n
Nhap n = 4
n =
4

x2 =
10
8
6
4
2
Báo cáo thực hành Matlab cơ bản

0
8

-2

-4

-6

-8

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

c. [1, 1/2, 1/3, 1/4, 1/5,…, 1/n]
>> n = input (' Nhap n = ')
format rat % Hien thi dang phan so cua phan nguyen nho nhat
x3 = 1./(1:n)

Nhap n = 4
n =
4
x3 =
1
1/2
1/3
1/4
d. [0, 1/2 2/3, 3/4, 4/5,....(n-1)/n]
>> n = input (' Nhap n = ')
format rat
x4 = ((1:n)-1)./(1:n)
Nhap n = 4
n =
4
x4 =
0

1/2

2/3

3/4

2.6. Tạo vector x với các phần tử là xn= (-1)n+1/(2n - 1). Tính tổng 100 phần tử đầu tiên
của x.
n = input ('Nhap n = ')
format rat
x =((-1).^((1:n)+1))./((2.*(1:n) - 1))
S = 0;

for i = 1:100
S = S + x(i);
end
Tong = S

Báo cáo thực hành Matlab cơ bản

9

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

3. Ma trận
3.1. Cho x = [1 4 8], y = [2 1 5] và A = [3 1 6 ; 5 2 7]. Xét xem dòng lệnh nào hợp lệ, dự
đoán kết quả, giải thích; rồi thử lại bằng Matlab :
a. x + y
>> x + y
ans =
3

5

13

b. x + A (Không thực hiện được phép cộng vì ma trận phải cùng cỡ)
>> x + A

??? Error using ==> plus
Matrix dimensions must agree.

c. x’ + y (Không thực hiện được phép cộng vì ma trận phải cùng cỡ)
>> x' + y
??? Error using ==> plus
Matrix dimensions must agree.

d. A – [x’ y’] (Không thực hiện được phép trừ vì ma trận phải cùng cỡ)
>> A - [x' y']
??? Error using ==> minus
Matrix dimensions must agree.

e. [x ; y’] (Không thực hiện được vì các hàng phải có số cột bằng nhau)
>> [x ; y']
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

f. [x ; y]
>> [x ; y]
ans =
1

4

8

2


1

5

Báo cáo thực hành Matlab cơ bản

10

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

g. A – 3
>> A - 3
ans =
0

-2

3

2

-1

4


3.2. Cho A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5], dự đoán kết quả, giải thích; rồi thử lại bằng
Matlab:
a. A’
>> A'
ans =
2

3

8

7

1

1

9

5

2

7

6

5

b. A(:,[1 4])

>> A(:,[1 4])
ans =
2

7

3

6

8

5

c. A([2 3], [3 1])
>> A([2 3], [3 1])
ans =
5

3

2

8

Báo cáo thực hành Matlab cơ bản

11

Sinh viên: Nguyễn Văn Tùng



Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

d. reshape(A, 2, 6)
>> reshape(A, 2, 6)

%Dinh dang lai kich thuoc ma tran

ans =
2

8

1

9

2

6

3

7

1


5

7

5

e. A(:)
>> A(:)
ans =
2
3
8
7
1
1
9
5
2
7
6
5

f. flipud(A)
>>flipud(A)

%Chuyen cac phan tu theo thu tu hang nguoc lai

ans =
8


1

2

5

3

1

5

6

2

7

9

7

Báo cáo thực hành Matlab cơ bản

12

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông


GVHD: Nguyễn Mạnh Cường

g. fliplr(A)
>> fliplr(A) %Chuyen cac phan tu theo thu tu cot nguoc lai
ans =
7

9

7

2

6

5

1

3

5

2

1

8


h. [A; A(end,:)]
>> [A; A(end,:)]
ans =
2

7

9

7

3

1

5

6

8

1

2

5

8

1


2

5

i. A(1:3,:)
>> A(1:3,:)
ans =
2

7

9

7

3

1

5

6

8

1

2


5

j. [A; A(1:2, :)]
>> [A; A(1:2, :)]
ans =
2

7

9

7

3

1

5

6

8

1

2

5

2


7

9

7

3

1

5

6

Báo cáo thực hành Matlab cơ bản

13

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

k. sum(A)
>> sum(A)
ans =
13


9

16

15

16

18

l. sum(A’)
>> sum(A')
ans =
25

m. sum(A, 2)
>> sum(A, 2)
ans =
25
15
16

n. [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]
>> [[A;sum(A)][sum(A,2);sum(A(:))]]
ans =
2

7


9

7

25

3

1

5

6

15

8

1

2

5

16

13

9


16

18

56

3.3. Cho ma trận A = [2 4 1 ; 6 7 2 ; 3 5 9], viết lệnh Matlab để:
a. Gán cho vector x là dòng thứ nhất của A.
>> x = A(1,:)
x =
2

4

1

Báo cáo thực hành Matlab cơ bản

14

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

b. Gán cho ma trận y là hai dòng còn lại (cuối) của A.
>> y =A(end-1:end,:)
y =

6

7

2

3

5

9

c. Tính tổng theo dòng ma trận A.
>> sum(A,2)
ans =
7
15
17

d. Tính tổng theo cột ma trận A.
>> sum(A,1)
ans =
11

16

12

e. Tìm giá trị lớn nhất và nhỏ nhất của ma trận.
>> max(max(A))

ans =
9
>> min(min(A))
ans =
1

f. Tính tổng các phần tử của A
>> sum(A(:))
ans =
39

Báo cáo thực hành Matlab cơ bản

15

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

3.4. Hãy tạo ra ma trận 4x4 có giá trị nguyên nằm trong khoảng [-10,10]. Sau đó:
>> A=round(20*rand(4,4)-10)
A =
9
-5
2
0


8
5
-1
-10

6
-1
2
6

8
5
-6
-2

a. Cộng mỗi phần tử của ma trận cho 15
>> A+15
ans =
24
23
21
23
10
20
14
20
17
14
17
9

15
5
21
13
b. Bình phương mỗi phần tử của ma trận
>> A.^2
ans =
81
64
36
64
25
25
1
25
4
1
4
36
0
100
36
4
c. Cộng thêm 10 vào các phần tử ở dòng 1 và dòng 2
>> A([1 2],:)=A([1 2],:)+10
A =
19
18
16
18

5
15
9
15
2
-1
2
-6
0
-10
6
-2
d. Cộng thêm 10 vào các phần tử ở cột 1 và cột 4
>> A(:,[1 4])=A (:,[1 4])+10
A =
29
18
16
28
15
15
9
25
12
-1
2
4
10
-10
6

8

Báo cáo thực hành Matlab cơ bản

16

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

3.5. Cho vectơ x=[2 4 1 6], y=[5 9 1 0]. Hãy tạo ra ma trận
a. 4x6 toàn là số 0, 4x5 toàn là số 1, ma trận đơn vị 5x5
>> zeros(4,6)
ans =
0
0
0
0
0
0
0
0

0
0
0
0


0
0
0
0

0
0
0
0

>> ones(4,5)
ans =
1
1
1
1
1
1
1
1

1
1
1
1

1
1
1

1

1
1
1
1

>> eye(5,5)
ans =
1
0
0
1
0
0
0
0
0
0

0
0
1
0
0

0
0
0
1

0

0
0
0
0
1

0
0
0
0

b. B có tính chất: dòng 1 và 4 có giá trị là vectơ x, dòng 2 và 3 có giá trị là vectơ y
>> B = [x;y;y;x]
B =
2

4

1

6

5

9

1


0

5

9

1

0

2

4

1

6

Báo cáo thực hành Matlab cơ bản

17

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

c. C có tính chất: cột 1 và 3 có giá trị là vectơ x, cột 2 và 4 có giá trị là vectơ y

>> C = [x; y; x; y]'
C =
2
5
2
5
4
9
4
9
1
1
1
1
6
0
6
0
3.6. Cho A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5; 1 2 3 5], viết lệnh Matlab để:
a. Gán cho ma trận B là các cột ở vị trí chẵn
>> B = A(:,2:2:end)
B =
7
7
1
6
1
5
2
5

b. Gán cho ma trận C là các dòng ở vị trí lẻ
>> C = A(1:2:end,:)
C =
2
7
9
7
8
1
2
5
c. Gán lại A thành chuyển vị của nó
>> A = A'
A =
2
3
8
1
7
1
1
2
9
5
2
3
7
6
5
5

d. Tính nghịch đảo mọi phần tử của A
>> A.^-1
ans =
0.5000
0.3333
0.1250
1.0000
0.1429
1.0000
1.0000
0.5000
0.1111
0.2000
0.5000
0.3333
0.1429
0.1667
0.2000
0.2000

Báo cáo thực hành Matlab cơ bản

18

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường


e. Lấy căn bậc hai mọi phần tử của A
>> sqrt(A)
ans =
1.4142
1.7321
2.8284
2.6458
1.0000
1.0000
3.0000
2.2361
1.4142
2.6458
2.4495
2.2361

Báo cáo thực hành Matlab cơ bản

19

1.0000
1.4142
1.7321
2.2361

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông


GVHD: Nguyễn Mạnh Cường

4. Vẽ đồ thị
4.1. Vẽ đồ thị hàm số x , x 3 , e x và e x với 0 < x < 4 .
2

>> x = 0:0.1:4;
y = x;
plot(x,y,'-.');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y = x');
gtext('y = x');

Hình 1 – Đồ thị hàm số y = x

Báo cáo thực hành Matlab cơ bản

20

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

>> x = 0:0.1:4;
y = x.^3;

plot(x,y,'.');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y = x^3');
gtext('y = x^3');

Hình 2 – Đồ thị hàm số y = x 3

Báo cáo thực hành Matlab cơ bản

21

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

>> x = 0:0.1:4;
y = exp(x);
plot(x,y,'*');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y = e^x');
gtext('y = e^x');

Hình 3 – Đồ thị hàm số y = e x

Báo cáo thực hành Matlab cơ bản


22

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông

GVHD: Nguyễn Mạnh Cường

>> x = 0:0.01:4;
y = exp(x.^2);
plot(x,y,'-.');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y = e^(x^2)');
gtext('y = e^(x^2)');

x
Hình 4 – Đồ thị hàm số y = e

Báo cáo thực hành Matlab cơ bản

23

2

Sinh viên: Nguyễn Văn Tùng



Tin ứng dụng Điện tử viễn thông

4.2. Vẽ đồ thị hàm số f ( x) = sin

GVHD: Nguyễn Mạnh Cường
1
với 0.01 < x < 0.1 .
x

>> x = 0.01:0.001:0.1;
y = sin(1./x);
plot(x,y,'-.');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y=sin(1/x)');
gtext('y=sin(1/x)');

Hình 5 – Đồ thị hàm số y = sin

Báo cáo thực hành Matlab cơ bản

24

1
x

Sinh viên: Nguyễn Văn Tùng


Tin ứng dụng Điện tử viễn thông


GVHD: Nguyễn Mạnh Cường

4.3. Vẽ hai hàm số y = x 2 và y = sin 3x trên cùng một đồ thị, ghi chú thích.
>> x = -5:0.01:5;
y1 = x.^2;
y2 = sin(3*x);
plot(x,y1,'-.',x,y2,'.');
xlabel('Truc Ox');
ylabel('Truc Oy');
title ('Do thi ham so y = x^2 va y = sin3x');
gtext ('y = x^2');
gtext ('y = sin3x');

Hình 6 – Đồ thị hàm số y = x 2 và y = sin 3x

Báo cáo thực hành Matlab cơ bản

25

Sinh viên: Nguyễn Văn Tùng


×