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