Đang tải... (xem toàn văn)
Báo cáo thực hành matlab cơ bản
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 Làm quen Matlab 1.1 Tính tay biểu thức sau, thử lại Matlab: a 2/2 * = f + round(6/9 + 3*2) / – = 2.5 >>2/2 * >>2 + round(6/9 + 3*2)/2 - ans = ans = 2.5000 b – 4/2 + 7^2 – = 52 g + floor(6/9 + 3*2) / – = >>6 - 4/2 + 7^2 - >>2 + floor(6/9 + 3*2)/2 - ans = ans = 52 c 10/2 \ 10 – + 2*4 =7 h + ceil(6/9 + 3*2) / – = 2.5 >> 10/2 \ 10 - + 2*4 >>2 + ceil(6/9 + 3*2)/2 - ans = ans = 2.5000 d 3^2 / = 1.5 k fix(4/9) + fix(3*(5/6)) = >> 3^2 / >> fix(4/9) + fix(3*(5/6)) ans = ans = 1.5000 e 3^2^2 = 81 >> 3^2^2 ans = 81 1.2 Dự đoán kết xuất hình: a ; >> ; ans = b 2/4 = 0.5 >> / ans = 0.5000 Báo cáo thực hành Matlab Sinh viên: Nguyễn Văn Tùng Tin ứng dụng Điện tử viễn thông c 2\4 = >> 2\4 ans = d , >> , ans = ans = e 2:4 >> 2:4 ans = GVHD: Nguyễn Mạnh Cường 1.3 Cho x = 2, y = Dự đoán kết tiếp theo: c x = y + x – z a z = x >> z = x >> x = y + x - z z = x = b y = y +z d x + y – z >> y = y +z >> x + y - z y = ans = 1.4 Giải phương trình bậc hai sau cách thực bước, sau kiểm tra với hàm Matlab: a x − 3x + = a = 1; b = −3;c = ∆ = b − 4ac = => x1 = −b − ∆ −b + ∆ = 1; x = =2 2a 2a Báo cáo thực hành Matlab 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 Matlab: >> p =[1 -3 2]; KQ = roots(p) KQ = b x − x + = a = 1; b = −1; c = ∆ = b − 4ac = −7 => x1 = −b − ∆ −b + ∆ = 0.5 - 1.3229i ; x2 = = 0.5 + 1.3229i 2a 2a Kiểm tra Matlab: >> p =[1 -1 2]; KQ = roots(p) KQ = 0.5000 + 1.3229i 0.5000 - 1.3229i 1.5 a Tạo số ngẫu nhiên có giá trị từ đến >> a = rand a = 0.9501 b Tạo số ngẫu nhiên có giá trị từ đến 100 >> b = 100*rand b = 23.1139 c Tạo 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 = Báo cáo thực hành Matlab 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 = nhap m = m = KQ = 6.9439 1.6 Giải phương trình sau b x − x + x − = a x − x + = >> p = [1 -3 1]; KQ = roots(p) KQ = -1.8794 1.5321 0.3473 >> p = [3 -3 -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 tay biểu thức sau, thử lại Matlab a mod(a,b) >> mod(a,b) %Chia lay phan du ans = b rem(a,b) >> rem(a,b) %Chia lay phan du ans = c gcd(a,b) >> gcd(a,b) %Uoc chung lon nhat ans = d lcm(a,b) >> lcm(a,b) %Boi chung nho nhat ans = 180 Báo cáo thực hành Matlab 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 Vector 2.1 Tạo vector chứa số nguyên từ 31 đến 75 >> A = 31:75 Tạo vector có 10 phần tử có giá trị nguyên lấy ngẫu nhiên khoảng [0, 100] >> B = round(100*rand(1,10)) B = 95 23 61 49 89 76 46 82 44 Tạo vector có 10 phần tử có giá trị nguyên lấy ngẫu nhiên khoảng [-20 ,10] >> C = round(30*rand(1,10))-20 C = -2 -15 -8 8 -8 2.2 Cho x = [3 6] dự đoán kết dòng lệnh sau thử lại Matlab: a x(3) >> x(3) ans = b x(1:7) >> x(1:7) ans = c x(1:end) >> x(1:end) ans = d x(1:end-1) >> x(1:end-1) ans = e x(6:-2:1) >> x(6:-2:1) ans = Báo cáo thực hành Matlab 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 1]) >> x([1 1]) ans = g sum(x) >> sum(x) ans = 33 3 2.3 Cho x = [2 6] a Cộng thêm 16 vào tất phần tử >> x+16 ans = 18 21 17 22 b Cộng thêm vào phần tử vị trí lẻ >> x(1:2:end) = x(1:2:end) + x = 5 c Lấy bậc tất phần tử >> sqrt(x) ans = 1.4142 2.2361 1.0000 2.4495 d Bình phương tất phần tử >> x.^2 ans = 25 Báo cáo thực hành Matlab 36 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 vector cột: x = [3 8]’ , y = [4 5]’ a Lấy tổng phần tử x cộng thêm vào phần tử y >> sum(x)+ y ans = 23 20 22 24 b Luỹ thừa phần tử x với số mũ tương ứng phần tử y >> x(:)= x.^y x = 81 216 32768 c Chia phần tử y với phần tử tương ứng x >> y./x ans = 1.3333 0.5000 0.5000 0.6250 d Nhân phần tử x với phần tử tương ứng y, đặt vector z >> z = x.*y z = 12 18 Báo cáo thực hành Matlab 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 phần tử 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 x y >> sum(x.*y) ans = 72 2.5 Tạo vector x sau a [2, 4, 6, 8,…,2n] >> n = input (' Nhap n = ') x = 2:2:2*n Nhap n = n = x = b [10, 8, 6, 4, 2, 0, -2, -4,…,-2n] >> n = input (' Nhap n = ') x2 = 10:-2:-2*n Nhap n = n = x2 = 10 Báo cáo thực hành Matlab -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 = n = x3 = 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 = n = x4 = 1/2 2/3 3/4 2.6 Tạo vector x với phần tử xn= (-1)n+1/(2n - 1) Tính tổng 100 phần tử 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 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 Ma trận 3.1 Cho x = [1 8], y = [2 5] A = [3 ; 7] Xét xem dòng lệnh hợp lệ, dự đoán kết quả, giải thích; thử lại Matlab : a x + y >> x + y ans = 13 b x + A (Không thực phép cộng ma trận phải cỡ) >> x + A ??? Error using ==> plus Matrix dimensions must agree c x’ + y (Không thực phép cộng ma trận phải cỡ) >> x' + y ??? Error using ==> plus Matrix dimensions must agree d A – [x’ y’] (Không thực phép trừ ma trận phải cỡ) >> A - [x' y'] ??? Error using ==> minus Matrix dimensions must agree e [x ; y’] (Không thực hàng phải có số cột 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 = Báo cáo thực hành Matlab 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 4.4 Vẽ hàm số y = x3 − x + sử dụng hàm plot fplot >> x = -6:0.1:6; y = x.^3 - 3.*x +1; plot(x,y,'.-'); xlabel('Truc Ox'); ylabel('Truc Oy'); title ('Do thi ham so y = x^3-3x+1 '); gtext ('y = x^3-3x+1'); Hình – Đồ thị hàm số y = x3 − 3x + sử dụng hàm plot Báo cáo thực hành Matlab 26 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 >> y = inline('x.^3 - 3.*x +1'); fplot (y,[-6 6]); xlabel('Truc Ox'); ylabel('Truc Oy'); title ('Do thi ham so y = x^3-3x+1 '); gtext ('y = x^3-3x+1'); Hình – Đồ thị hàm số y = x3 − x + sử dụng hàm fplot Báo cáo thực hành Matlab 27 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 Biểu thức logic 5.3 Cho x = [3 15 12 -1 -12 1], viết lệnh thực hiện: a Chuyển giá trị dương thành giá trị >> x(x>0)=0 x = 0 0 -1 -12 b Chuyển bội số thành số >> x(mod(x,3)==0) = x = 3 3 -1 3 c Nhân giá trị chẵn cho >> x(mod(x,2)==0) = x(mod(x,2)==0)*5 x = 15 60 -1 d Gán cho vector y giá trị lớn 10 x >> y = x(x>10) y = 15 12 e Chuyển giá trị nhỏ trung bình cộng thành giá trị >> x(x> x = randperm(35) y(x=6)&(x=6)&(x=20)&(x=20)&(x 100 - Ghi M-file: if (T>0)&(T100 h = 0.45*T + 900 end - Lưu tên: bai65.m - Trên cửa sổ command window nhập: T=5, T=110 “bai65” Kết quả: >> T = >> T = 110 T = T = 110 >> bai65 >> bai65 h = h = -5 949.5000 6.6 f(x) = -1 =0 =1 x < x = x > - Ghi M-file: if x>0 f=1 elseif x=0 f=0 else f=-1 end Báo cáo thực hành Matlab 30 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 - Lưu tên: bai66.m - Trên cửa sổ command window nhập: x=-5, x=0, x=5 “bai66” Kết quả: >> x=-5 >> x=0 >> x=5 x = x = x = -5 >> bai66 >> bai66 >> bai66 f = f = f = -1 - So sánh với hàm sign >> x =[-5 5]; sign(x) %Xet dau tung phan tu cua x ans = -1 Báo cáo thực hành Matlab 31 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 Vòng lặp 7.1 Cho vector x = [1 1], viết dòng lệnh để : >> x = [1 1] x = a Tính tổng tất phần tử >> s = 0; n = size(x,1) * size(x,2); for i = 1:n s = s+x(i); end KetQua = s KetQua = 22 So sánh kết với lệnh sum: >> sum(x) ans = 22 b Viết hàm tính tổng dãy từ đến j >> n = size(x,2) %Dem so phan tu cua x if n > cumsum(x) ans = 12 21 Báo cáo thực hành Matlab 21 32 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 7.2 Tạo ma trận M x N số ngẫu nhiên (dùng lệnh rand) Chuyển giá trị nhỏ 0.2 thành 0, giá trị lớn hay 0.2 thành - Ghi M-file: >> M = input('Nhap M = ') N = input('Nhap N = ') X = rand(M,N) X(X=0.2)=1 - Kết quả: Nhap M = M = Nhap N = N = X = 0.0811 0.8511 0.5620 0.3193 X = 1 0.3749 0.8678 0.3722 0.0737 1 0 0.1998 0.0495 0.5667 0.1219 1 0.5221 0.1171 0.7699 0.3751 0.8234 0.0466 0.5979 0.9492 1 7.5 Viết script yêu cầu nhập nhiệt độ Fahrenheit chuyển sang độ Celcius tương ứng Script chạy đến không nhập nhiệt độ (Sử dụng hàm isempty) F = input('Nhiet Fahrenheit: ') while isempty(F)==0 %Kiem tra F co la ma tran rong hay khong disp('Nhiet Celcius tuong ung la: ') C = (F-32)/1.8 F = input('Nhiet Fahrenheit: ') end Báo cáo thực hành Matlab 33 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 7.6 Viết script yêu cầu: Nhập liên tục số, dừng lại nhập 0, xuất trung bình cộng số dương trung bình cộng số âm dãy số nói - Ghi M-File: s = []; x = input('Nhap vao mot so bat ky: ') while x~=0 s = [s x]; x = input('Nhap vao mot so bat ky: ') end DaySoDuong = s(s>0) TrungBinhDaySoDuong = mean(DaySoDuong) DaySoAm = s(s n = size(X,1)*size(X,2) = X(1); for i = 1:n if X(i) if mod(n,2)==0 n = n/2; s = [s n]; else n = n*3+1; s = [s n]; end end KetQua = s ChieuDaiDayLapLai = size (s,1)*size(s,2) - Kết quả: Nhap n = 13 n = 13 KetQua = 40 20 10 ChieuDaiDayLapLai = Báo cáo thực hành Matlab 16 40 Sinh viên: Nguyễn Văn Tùng [...]... 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. .. 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... 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... 36-x((x>=20)&(x> x = -6:0.1:6; y = x.^3 - 3.*x +1; plot(x,y,'.-'); xlabel('Truc Ox'); ylabel('Truc Oy'); title ('Do thi ham so y = x^3-3x+1 '); gtext ('y = x^3-3x+1'); Hình 7 – Đồ thị hàm số y = x3 − 3x + 1 sử dụng hàm plot Báo cáo thực hành. .. Báo cáo thực hành Matlab cơ bản 30 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 - Lưu dưới tên: bai66.m - Trên cửa sổ command window nhập: x=-5, x=0, x=5 và “bai66” Kết quả: >> x=-5 >> x=0 >> x=5 x = x = x = -5 0 5 >> bai66 >> bai66 >> bai66 f = f = f = -1 0 1 - So sánh với hàm sign >> x =[-5 0 5]; sign(x) %Xet dau tung phan tu cua x ans = -1 0 1 Báo cáo thực hành. .. dụng hàm plot Báo cáo thực hành Matlab cơ bản 26 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 >> y = inline('x.^3 - 3.*x +1'); fplot (y,[-6 6]); xlabel('Truc Ox'); ylabel('Truc Oy'); title ('Do thi ham so y = x^3-3x+1 '); gtext ('y = x^3-3x+1'); Hình 8 – Đồ thị hàm số y = x3 − 3 x + 1 sử dụng hàm fplot Báo cáo thực hành Matlab cơ bản 27 Sinh viên: Nguyễn Văn Tùng... 12 21 21 22 So sánh kết quả với lệnh cumsum: >> cumsum(x) ans = 1 9 12 21 Báo cáo thực hành Matlab cơ bản 21 32 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 7.2 Tạo ma trận M x N các số ngẫu nhiên (dùng lệnh rand) Chuyển các giá trị nhỏ hơn 0.2 thành 0, các giá trị lớn hơn hay bằng 0.2 thành 1 - Ghi M-file: >> M = input('Nhap M = ') N = input('Nhap N = ') X =... 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,... ] ] >> [[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 ... phương trình bậc hai sau cách thực bước, sau kiểm tra với hàm Matlab: a x − 3x + = a = 1; b = −3;c = ∆ = b − 4ac = => x1 = −b − ∆ −b + ∆ = 1; x = =2 2a 2a Báo cáo thực hành Matlab Sinh viên: Nguyễn... lệnh sau thử lại Matlab: a x(3) >> x(3) ans = b x(1:7) >> x(1:7) ans = c x(1:end) >> x(1:end) ans = d x(1:end-1) >> x(1:end-1) ans = e x(6:-2:1) >> x(6:-2:1) ans = Báo cáo thực hành Matlab Sinh viên:... dự đoán kết quả, giải thích; thử lại Matlab: a A’ >> A' ans = 1 b A(:,[1 4]) >> A(:,[1 4]) ans = c A([2 3], [3 1]) >> A([2 3], [3 1]) ans = Báo cáo thực hành Matlab 11 Sinh viên: Nguyễn Văn Tùng