1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI GIẢNG TÓM TẮT MATLAB CĂN BẢN

71 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Giảng Tóm Tắt Matlab Căn Bản
Tác giả Thái Duy Quý
Trường học Trường Đại Học Đà Lạt
Chuyên ngành Công Nghệ Thông Tin
Thể loại Giáo trình
Năm xuất bản 2013
Thành phố Đà Lạt
Định dạng
Số trang 71
Dung lượng 1,59 MB

Cấu trúc

  • CHƯƠNG I. GIỚ I THI Ệ U MATLAB (4)
    • 1. Gi ớ i thi ệ u (4)
    • 2. Kh ởi độ ng và chu ẩ n b ị thư mụ c làm vi ệ c trong Matlab (4)
    • 3. Qu ả n lý không gian làm vi ệ c c ủ a Matlab (5)
    • 4. Các thành ph ầ n c ủ a Mathlab (6)
    • 5. Các phím t ắt cơ bả n trong Matlab (7)
    • 6. Các toán t ử cơ bả n c ủ a Matlab (8)
    • CHƯƠNG 2. MATLAB CƠ BẢ N (11)
      • 1. Nh ậ p xu ấ t d ữ li ệ u t ừ dòng l ệ nh (11)
      • 2. Nh ậ p xu ấ t d ữ li ệ u t ừ bàn phím (11)
      • 3. Nh ậ p xu ấ t d ữ li ệ u t ừ file (12)
      • 4. Các hàm toán h ọ c (13)
      • 5. Các phép toán trên ma trận và vector (16)
      • 6. T ạ o s ố ng ẫ u nhiên (18)
      • 7. Các l ệ nh dùng l ậ p trình (19)
    • CHƯƠNG 3. XỬ LÝ ĐỒ TH Ị TRONG MATLAB (22)
      • 1. Khái niệm chung (22)
      • 2. Các lệnh vẽ (22)
      • 3. T ạ o hình v ẽ (22)
      • 4. Đặc tả kiểu đường vẽ (23)
      • 5. Đặc tả màu và kích thước đường vẽ (23)
      • 6. Thêm đường vẽ vào đồ thị đã có (25)
      • 7. Ch ỉ v ẽ các điể m s ố li ệ u (25)
      • 8. Vẽ các điểm và đường (26)
      • 9. Vẽ với hai trục y (26)
      • 10. Vẽ đường cong với số liệu 3D (27)
      • 11. Đặ t các thông s ố cho tr ụ c (27)
      • 12. Ghi nhãn lên các trục toạ độ (28)
      • 13. Định vị văn bản trên hình vẽ (29)
      • 14. Đồ ho ạ đặ c bi ệ t (30)
      • 15. Đồ ho ạ 3D (37)
      • 16. V ẽ các vectơ (40)
    • CHƯƠNG 4. LẬ P TRÌNH GIAO DI ỆN NGƯỜ I DÙNG (GUI) (44)
      • 1. Cách th ự c hi ệ n (44)
      • 2. L ậ p trình giao di ệ n v ớ i Blank GUI (45)
      • 3. Kéo th ả và thi ế t l ậ p thu ộc tính cho các điề u khi ể n (46)
      • 4. Vi ế t l ệnh cho chương tr ình (47)
      • 5. Các tính ch ấ t c ủa các điề u khi ể n trong GUIDE Matlab (49)
      • 6. T ổ ng quan v ề hàm Callback trong l ậ p trình GUI (50)
      • 7. Chương tr ình Calculator (52)
    • CHƯƠNG 5. MỘ T S Ố PHƯƠNG PHÁP XỬ LÝ TÍNH TOÁN TRÊN MATLAB (55)
      • 1. Tính đị nh th ứ c c ủ a ma tr ậ n (55)
      • 2. Ngh ịch đả o ma tr ậ n b ằ ng cách dùng Minor (59)
      • 3. Ngh ịch đả o ma tr ậ n b ằ ng thu ậ t toán gauss-Jordan (60)
      • 4. L ậ p trình giao di ệ n: Gi ải phương tr ình b ậ c 2 (61)

Nội dung

GIỚ I THI Ệ U MATLAB

Gi ớ i thi ệ u

Matlab, viết tắt của Matrix Laboratory, là ngôn ngữ lập trình cấp cao dạng thông dịch, được phát triển bởi công ty MathWorks Nó cung cấp môi trường tính toán số, cho phép thực hiện các phép toán ma trận, vẽ đồ thị hàm số, và biểu diễn thông tin dưới dạng 2D hoặc 3D Matlab cũng hỗ trợ thực hiện các thuật toán và giao tiếp dễ dàng với các chương trình từ các ngôn ngữ lập trình khác.

Kh ởi độ ng và chu ẩ n b ị thư mụ c làm vi ệ c trong Matlab

Trước khi khởi động Matlab, người dùng nên tạo một thư mục làm việc để lưu trữ các file chương trình, chẳng hạn như D:\ThucHanh_DSP Matlab sẽ xử lý các lệnh được lưu trong các file có định dạng *.m.

Sau khi cài đặt Matlab, bạn chỉ cần nhấp vào biểu tượng trên desktop hoặc truy cập vào Start > All Programs > Matlab 7.0.4 > Matlab để khởi chạy chương trình.

Sau khi khởi động Matlab, bước tiếp theo là chỉ định thư mục làm việc Để thực hiện điều này, hãy nhấp vào biểu tượng trên thanh công cụ và chọn thư mục làm việc mong muốn, chẳng hạn như D:\ThucHanh_Matlab.

Qu ả n lý không gian làm vi ệ c c ủ a Matlab

Không gian làm việc của Matlab gồm có các phần cơ bản sau:

*Nút Start: ở góc dưới bên trái của màn hình, cho phép chạy các ứng dụng mẫu (demos), các công cụ và cửa sổchưa hiển thị khi khởi động Matlab

Ví dụ : Start/Matlab/Demos và chạy một ứng dụng mẫu

Cửa sổ lệnh trong Matlab là nơi người dùng nhập các dòng lệnh, được biểu thị bằng dấu '>>', cho thấy rằng Matlab đang sẵn sàng tiếp nhận lệnh từ người dùng.

Bạn có thể xóa trắng toàn bộ cửa sổ lệnh bằng cách sử dụng lệnh >> clc hoặc chọn Edit/ Clear Command Window Lưu ý rằng khi thực hiện lệnh này, các giá trị của các biến hiện có sẽ không bị thay đổi hay mất đi.

* Cửa sổ không gian làm việc (workspace): Nơi lưu giữ các biến và dữ liệu do người dùng nhập vàongoại trừ những biến cục bộ thuộc về một M-file

Sử dụng lệnh 'who' hoặc 'whos' để liệt kê các biến có trong không gian làm việc Để xem giá trị của một biến, chỉ cần gõ tên biến tại dấu nhắc lệnh Nếu bạn muốn xóa một hàm hoặc biến khỏi không gian làm việc, hãy sử dụng lệnh 'clear'.

Cửa sổ biên tập mảng cho phép người dùng chỉnh sửa và biên tập ma trận một cách dễ dàng Công cụ Array Editor hoạt động tương tự như một bảng tính, giúp người dùng thao tác trực quan với các dữ liệu trong ma trận.

Cửa sổ địa chỉ thư mục hiện thời trong Matlab cho biết thư mục mà chương trình sẽ tìm kiếm các tệp M-file và các tệp không gian làm việc (.mat files) đã được tải và lưu Để tạo một tệp m trong thư mục làm việc, người dùng có thể thực hiện các bước đơn giản.

 Nhấp vào biểu tượng hoặc vào File\New\M-File :

Khi cửa sổ soạn thảo xuất hiện, người dùng cần gõ chương trình vào file và sau đó nhấn biểu tượng để lưu vào thư mục hiện tại (D:\ThucHanh_Matlab) Để thực thi các lệnh trong file m, chỉ cần gõ tên file đó trong Matlab, ví dụ, để thực thi lệnh trong file test.m, chỉ cần nhập lệnh test.

Các thành ph ầ n c ủ a Mathlab

Ngôn ngữ Matlab là một ngôn ngữ lập trình cao cấp chuyên về ma trận và mảng, cung cấp các câu lệnh, hàm, cấu trúc dữ liệu, và tính năng lập trình hướng đối tượng Matlab hỗ trợ phát triển ứng dụng từ quy mô nhỏ đến các hệ thống lớn và phức tạp, giúp người dùng dễ dàng thực hiện các tác vụ tính toán và phân tích dữ liệu.

Môi trường làm việc Matlab là bộ công cụ và phương tiện cần thiết cho người dùng và lập trình viên Matlab, bao gồm các chức năng quản lý biến trong không gian làm việc, xuất nhập khẩu dữ liệu, cũng như các công cụ phát triển, quản lý, gỡ rối và định hình M-file, ứng dụng của Matlab.

Hệ thống đồ hoạ của Matlab cung cấp các lệnh cao cấp để trực quan hoá dữ liệu hai chiều và ba chiều, xử lý ảnh và ảnh động Ngoài ra, nó còn cho phép người dùng tuỳ biến giao diện đồ hoạ và xây dựng một giao diện hoàn chỉnh cho ứng dụng Matlab.

Thư viện toán học Matlab cung cấp một bộ sưu tập phong phú các thuật toán tính toán, bao gồm các hàm cơ bản như cộng, sin, cos, và số học phức Bên cạnh đó, nó còn hỗ trợ các hàm phức tạp hơn như nghịch đảo ma trận, tìm trị riêng của ma trận và phép biến đổi Fourier nhanh, giúp người dùng thực hiện các phép toán một cách hiệu quả và chính xác.

Giao diện chương trình ứng dụng Matlab API là một thư viện hỗ trợ viết các chương trình C và Fortran tương thích với Matlab Simulink, một phần mềm kèm theo Matlab, cho phép mô phỏng các hệ thống động học phi tuyến thông qua giao diện đồ họa, giúp người dùng dễ dàng mô hình hóa hệ thống bằng cách vẽ sơ đồ khối Chương trình này có khả năng làm việc với nhiều loại hệ thống, bao gồm hệ thống tuyến tính, phi tuyến, liên tục theo thời gian, gián đoạn theo thời gian và đa biến.

Các phím t ắt cơ bả n trong Matlab

Trong quá trình soạn thảo lệnh, có thể dùng các phím tắt sau đây:

Ký hiệu phím Phím tắt Chức năng

Ctrl → Ctrl‐R Sang phải một từ

Các phím tắt hữu ích trên bàn phím bao gồm: Ctrl + L để di chuyển con trỏ đến đầu dòng, Ctrl + A để trở về đầu dòng, Ctrl + E để đến cuối dòng, Esc + Ctrl + U để xóa toàn bộ dòng, Ctrl + D để xóa ký tự tại vị trí con trỏ, và Ctrl + H để xóa ký tự trước vị trí con trỏ.

Các toán t ử cơ bả n c ủ a Matlab

‘ Chuyển vị ma trận hay số phức liên hợp

Các toán tử quan hệ :

> lớn hơn >= lớn hơn hoặc bằng

Các hằng: pi 3.14159265 i sốảo j tương tự i eps sai số 2‐52 realmin số thực nhỏ nhất 2‐1022 realmax số thực lớn nhất 21023 inf vô cùng lớn NaN Not a number

Clear Xóa tất cả các biến trong bộ nhớ Matlab clc Lệnh xóa cửa sổ lệnh (command window) pause Chờ sựđáp ứng từphía người dùng

% Câu lệnh sau dấu này được xem là dòng chú thích input Lệnh lấy vào một giá trị

Ví dụ: x = input(‘Nhap gia tri cho x:’); help lệnh yêu cầu sựgiúp đở từ Matlab

Save Lưu biến vào bộ nhớ

Ví dụ: Save test A B C (lưu các biến A, B, C vào file test)

Load Load biến từ file hay bộ nhớ Ví dụ: Load test

Các lệnh điều khiển cơ bản:

Lệnh Cú pháp/ Chức năng

If: Rẽ 2 nhánh IF expression statements ELSEIF expression statements

Switch: Lệnh rẽ nhiều nhánh SWITCH switch_expr

CASE case_expr, statement, , statement CASE {case_expr1, case_expr2, case_expr3, } statement, , statement

Lệnh lặp For FOR variable = expr, statement, , statement END

Lệnh lặp While WHILE expression statements END

Break Thoát đột ngột khỏi vòng lặp WHILE hay FOR

Continue Bỏ qua các lệnh hiện tại, tiếp tục thực hiện vòng lặp ở lần lặp tiếp theo

Một số lệnh cơ bản trên đồ thị:

Lệnh Chức năng clf xóa hình hiện tại plot(signal) vẽ dạng sóng tín hiệu signal stairs(signal) vẽ tín hiệu signal theo dạng cầu thang stem(signal) vẽ chuỗi dữ liệu rời rạc bar(signal) vẽ dữ liệu theo dạng cột mesh(A) hiển thị đồ họa dạng 3D các giá trị ma trận

Chi tiết các lệnh sẽđược làm rõ trong các chương tiếp theo

Trong chương này chúng ta đã làm quen với Matlab qua các thao tác cơ bản, Matlab là ngôn ngữ cấp cao, có các chức năng xử lý như một ngôn ngữ bình thường Ta sẽ tìm hiểu kỹ hơn các chức năng ở các phần kế tiếp

MATLAB CƠ BẢ N

1 Nh ập xu ất d ữ li ệu t ừ dòng l ệ nh

MATLAB không đòi hỏi phải khai báo biến trước khi dùng MATLAB phân biệt chữ hoa và chữthường Các số liệu đưa vào môi trường làm việc của Matlab được lưu lại suốt phiên làm việc cho đến khi gặp lệnh clear all Matlab cho phép ta nhập số liệu từ dòng lệnh

Khi nhập ma trận từ bàn phím ta phải tuân theo các quy định sau:

 Ngăn cách các phần tử của ma trận bằng dấu “,” hay dấu trống

 Dùng dấu “;” để kết thúc một hàng

 Bao các phần tử của ma trận bằng cặp dấu ngoặc vuông [ ]

Ví dụ 2.1: Để nhập các ma trận sau:

2 Nh ập xu ất d ữ li ệu t ừ bàn phím:

Lệnh input cho phép ta nhập số liệu từ bàn phím Ví dụ: x = input(’Nhap x: ’)

Lệnh format cho phép xác định dạng thức của dữ liệu

Ví dụ 2.2.1: format rat % so huu ti format long % so sẽ có 14 chu so sau dau phay format long e % so dang mu format hex % so dang hex format short e %so dang mu ngan format short %tro ve so dang ngan (default)

Một cách khác để hiển thị giá trị của biến và chuỗi là đánh tên biến vào cửa số lệnh Cũng

Trang 12 có thể dùng disp và fprintf để hiển thị các biến

Ví dụ: disp(ʹTri so cua x = ʹ), disp(x)

Ví dụ 2.2.2: Viết chương trình vidu_2.2.2.m như sau:

Kết quả chạy vidu_2.2.2 tại dòng lệnh như sau:

Để nhập một chuỗi từ bàn phím trong Python, cần thêm ký tự 's' vào đối số của hàm input Ví dụ: ans = input('Ban tra loi hoac : ', 's').

3 Nh ập xu ất d ữ li ệu t ừ file:

MATLAB có thể xử lý hai kiểu file dữ liệu: nhị phân (*.mat) và file ASCII (*.dat) Để lưu các ma trận A, B,C dưới dạng file nhị phân, ta dung lệnh: save ABC A B C và nạp lại các ma trận A, B bằng lệnh: load ABC A B

Nếu muốn lưu số liệu của ma trận B dưới dạng file ASCII ta viết: save b.dat B /ascii

Ví dụ 2.3: Viết chương trình trong tập tin vidu_2.3.m như sau: clear

C(2) = 2; C(4) = 4 disp('Nhan phim bat ky de xem nhap/xuat du lieu tu file') save ABC A B C % luu A,B & C duoi dang MAT‐file co ten ’ABC.mat’ clear('A', 'C') % xoa A va C khoi bo nho load ABC A C %doc MAT ‐ file de nhap A va C vao bo nho save b.dat B /ascii %luu B duoi dang file ASCII co ten ’b.dat’ clear B % xoa B load b.dat %doc ASCII b x = input('Nhap x:') format short e x format rat, x format long, x format short, x

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

The article provides a list of mathematical functions and their corresponding symbols The exponential function is represented as exp(x) for e raised to the power of x, while sqrt(x) denotes the square root of x The natural logarithm is indicated by log(x), and log10(x) refers to the logarithm with base 10 The absolute value of a complex number x is expressed as abs(x), and angle(x) represents the argument of the complex number The conjugate of the complex number is given by conj(x), with imag(x) denoting the imaginary part and real(x) the real part of x Lastly, sign(x) indicates the sign of the number x.

Các hàm lượng giác cos(x), sin(x), tan(x), acos(x), asin(x), atan(x), cosh(x), coth(x), sinh(x), tanh(x), acosh(x), acoth(x), asinh(x), atanh(x) b Các hàm toán h ọ c t ự t ạ o:

Matlab cho phép ta tạo hàm toán học và lưu nó vào một file để dùng như là hàm có sẵn của Matlab

Ví dụ 2.4: Ta cần tạo hàm: 1 2

Muốn thế ta tạo ra file f1.m như sau: function y = f1(x) y = 1/(1+8*x^2); và file f2.m: function y = f2(x) y(1) = x(1)*x(1)+4*x(2)*x(2) ‐ 5; y(2) = 2*x(1)*x(1)-2*x(1)-3*x(2) -2.5;

Khi sử dụng lệnh f1(2), ta nhận được giá trị của hàm f1 tại x = 2 Tương tự, lệnh f2([2 4]) cho giá trị của hàm f2 tại x1 = 2 và x2 = 4 Ngoài ra, lệnh feval(‘f1’, 2) và feval(‘f2’, [2 4]) cũng mang lại kết quả tương tự.

Bài tập: Viết chương trình tạo hàm sau đây:

Cách thứ hai để biểu diễn một hàm toán học một biến trên dòng lệnh là tạo ra một đối tượng inline từ biểu thức chuỗi Ví dụ, bạn có thể nhập hàm bằng cách sử dụng cú pháp: f1 = inline('1./(1 + 8*x.^2)', 'x'); sau đó có thể tính giá trị của hàm tại các điểm cụ thể bằng cách sử dụng f1([0 1]) hoặc feval(f1, [0 1]).

Ta cũng có thể viết: f1 = ʹ1./(1 + 8*x.^2)ʹ; x = [0 1]; eval(f1)

Nếu hàm là đa thức ta chỉ cần nhập ma trận các hệ số từ số mũ cao nhất Ví dụ với đa thức P4(x) = x 4 + 4x 3 + 2x + 1 ta viết:

Để thực hiện các phép toán trên đa thức trong MATLAB, ta sử dụng lệnh conv để nhân hai đa thức và lệnh deconv để chia chúng Để tính giá trị của một đa thức, sử dụng lệnh polyval; nếu đa thức là ma trận, ta dùng lệnh polyvalm.

Lệnh fplot vẽđồ thị hàm toán học giữa các giá trị đã cho Ví dụ: fplot(‘f1’, [‐ 5 5 ]) grid on

Để tìm cực tiểu địa phương của một hàm toán học một biến trong khoảng nhất định, ta có thể sử dụng lệnh fminbnd trong Matlab Ví dụ, với hàm f = inline('1./((x - 0.3).^2 + 0.01) + 1./((x - 0.9).^2 + 0.04) - 6'), ta có thể xác định giá trị cực tiểu trong khoảng từ 0.3 đến 1 bằng cách thực hiện lệnh x = fminbnd(f, 0.3, 1).

Lệnh fminsearch tương tự như hàm fminbnd, được sử dụng để tìm cực tiểu địa phương của hàm nhiều biến Ví dụ, hàm ba biến được lưu trong file three_var.m có định nghĩa như sau: function b = three_var(v) x = v(1); y = v(2); z = v(3); b = x.^2 + 2.5*sin(y) - z^2*x^2*y^2.

Bây giờ tìm cực tiểu đối với hàm này bắt đầu từ x = ‐ 0.6 , y = ‐1.2 và z = 0.135 bằng các lệnh: v = [‐ 0.6 ‐1.2 0.135]; a = fminsearch(ʹthree_varʹ, v)

Lệnh fzero dùng để tìm điểm zero của hàm một biến Ví dụ: để tìm giá trị không của hàm lân cận giá trị ‐0.2 ta viết: f = inline(ʹ1./((x‐ 0.3).^2 + 0.01) + 1./((x ‐ 0.9).^2 + 0.04) ‐ 6 ʹ);

Zero found in the interval: [‐0.10949, ‐0.264] a =

5 Các phép toán trên ma tr ận và vector: a Khái ni ệ m chung

Giả sử ta tạo ra các ma trận a và b bằng các lệnh: a = [1 2 3; 4 5 6]; b = [3 ‐ 2 1];

Ta có thể sửa đổi chúng:

Toán tử ‘ dùng để chuyển vị một ma trận thực và chuyển vị liên hợp một ma trận phức

Nếu chỉ muốn chuyển vị ma trận phức, ta dùng thêm toán tử “.” Nghĩa là phải viết “.’” Ví dụ:

Phần tử ở hàng i cột j của ma trận m×n được ký hiệu là A(i, j), nhưng cũng có thể tham chiếu bằng chỉ số A(k) với k = i + (j - 1)m Cách này thường dùng để tham chiếu vector hàng hoặc cột Trong trường hợp ma trận đầy đủ, nó được coi là ma trận một cột dài được tạo từ các cột của ma trận ban đầu Ví dụ, A(5) tương đương với phần tử A(2, 2) Để xác định kích thước của ma trận, chúng ta sử dụng lệnh length để trả về kích thước lớn nhất hoặc size để biết số hàng và cột Ví dụ, với ma trận c = [1 2 3 4; 5 6 7 8], lệnh length(c) sẽ cho kích thước tối đa của ma trận.

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

 Lệnh 1:10 tạo một vec tơ hàng chứa 10 số nguyên từ 1 đến 10

 Lệnh 100: ‐ 7: 50 t ạ o m ộ t dãy s ố t ừ 100 đế n 51, gi ả m 7 đơn vị m ỗ i l ầ n

 Lệnh 0: pi/4: pi tạo một dãy số từ 0 đến pi, cách đều nhau pi/4

Các biểu thức chỉ số trong ma trận cho phép tham chiếu đến một phần cụ thể Ví dụ, A(1:k, j) chỉ đến k phần tử đầu tiên của cột j Toán tử “:” được sử dụng để tham chiếu đến tất cả các phần tử trong một hàng hoặc một cột.

Ví dụ: B = A(:, [1 3 2 ]) tạo ra ma trận B từ ma trận A bằng cách đổi thứ tự các cột từ [1

2 3] thành [1 3 2] d T ạ o ma tr ậ n b ằ ng hàm có s ẵ n

Matlab cung cấp một số hàm để tạo các ma trận cơ bản:

Trong bài viết này, chúng ta sẽ khám phá một số hàm quan trọng trong MATLAB để tạo ra các ma trận Hàm `zeros` được sử dụng để tạo ra ma trận với tất cả các phần tử bằng 0, ví dụ: `z = zeros(2, 4)` Tương tự, hàm `ones` tạo ra ma trận với tất cả các phần tử bằng 1, như trong `x = ones(2, 3)` và `y = 5*ones(2, 2)` Để tạo ra ma trận với các phần tử ngẫu nhiên phân bố đều, chúng ta sử dụng hàm `rand`, ví dụ: `d = rand(4, 4)` Nếu bạn cần ma trận với các phần tử ngẫu nhiên phân bố trực giao, hàm `randn` sẽ là lựa chọn phù hợp, như trong `e = randn(3, 3)` Hàm `magic(n)` tạo ra ma trận cấp n với các số nguyên từ 1 đến n² sao cho tổng các hàng bằng tổng các cột, với điều kiện n phải lớn hơn hoặc bằng 3 Đối với ma trận xác định dương, hàm `pascal(n)` sẽ cung cấp các phần tử từ tam giác Pascal, ví dụ: `pascal(4)` Cuối cùng, hàm `eye(n)` được sử dụng để tạo ma trận đơn vị, như trong `eye(3)`.

Trang 18 eye(m, n) tạo ma trận đơn vị mở rộng eye(3, 4) e L ắ p ghép

Ta có thể lắp ghép(concatenation) các ma trận có sẵn thành một ma trận mới

Ví dụ: a = ones(3, 3) b = 5*ones(3, 3) c = [a + 2; b] f Xoá hàng và c ộ t

Ta có thể xoá hàng và cột từ ma trận bằng dùng dấu []

Ví dụ: Để xóa cột thứ 2 của ma trận b, ta viết: b(:, 2) = []

Viết x(1: 2: 5) = [] nghĩa là ta xoá các phần tử bắt đầu từ 1 đến phần tử thứ 5 và cách 2 rồi sắp xếp lại ma trận g Các l ệ nh x ử lí ma tr ậ n:

X.*A nhân các phần tửtươngứng với nhau

X=A./B chia các phần tửtươngứng với nhau

Matlab có các lệnh tạo số ngẫu nhiên là rand và randn tạo ra các số ngẫu nhiên theo phân bốGauss

- rand(m, n): tạo ra ma trận các số ngẫu nhiên phân bốđồng nhất

- randn(m, n): tạo ra ma trận các số ngẫu nhiên theo phân bố chuẩn Gauss

7 Các l ệnh dùng l ập trình: a Các phát bi ể u điề u ki ệ n if, else, elseif

Cú pháp của if: if

Nếu cho kết quả đúng thì phần lệnh trong thân của if được thực hiện Các phát biểu else và elseif cũngtương tự

Chương trình doantuoi.m được thiết kế để đoán tuổi người dùng Đầu tiên, chương trình hiển thị lời chào và thông báo rằng tuổi của người dùng nằm trong khoảng từ 0 đến 30 Sau đó, chương trình tạo một số ngẫu nhiên x từ 0 đến 30 Người dùng được yêu cầu nhập tuổi của mình Nếu tuổi người dùng nhỏ hơn x, chương trình thông báo rằng người dùng trẻ hơn; nếu lớn hơn, thông báo rằng người dùng lớn hơn; và nếu bằng nhau, chương trình cho biết người dùng có cùng tuổi.

Cú pháp của switch như sau :

Trang 20 switch case n1 : case n2 :

case nn : otherwise : end c L ệ nh l ặ p while

Vòng lặp while dùng khi không biết trước số lần lặp Cú pháp như sau: while

XỬ LÝ ĐỒ TH Ị TRONG MATLAB

Xử lý đồ thị trong Matlab là một công cụ mạnh mẽ, cung cấp nhiều hàm để vẽ đồ thị 2D và 3D Chương này sẽ giới thiệu một số lệnh vẽ cơ bản giúp bạn thực hiện việc vẽ đồ thị hiệu quả.

Matlab cung cấp một loạt hàm để vẽ biểu diễn các vectơ số liệu cũngnhư giải thích và in các đường cong này

- plot: đồ họa 2‐D với số liệu 2 trục vô hướng và tuyến tính

- plot3: đồ họa 3‐D với số liệu 2 trục vô hướng và tuyến tính

- polar: đồ hoạ trong hệ toạđộ cực

- loglog: đồ hoạ với các trục logarit

- semilogx: đồ hoạ với trục x logarit và trục y tuyến tính

- semilogy: đồ hoạ với trục y logarit và trục x tuyến tính

- plotyy: đồ hoạ với trục y có nhãn ở bên trái và bên phải

Hàm plot có nhiều dạng khác nhau tùy thuộc vào các đối số được cung cấp Khi y là một vectơ, sử dụng plot(y) sẽ tạo ra một đường thẳng thể hiện mối quan hệ giữa các giá trị của y và chỉ số tương ứng Nếu có hai vectơ x và y, hàm plot(x, y) sẽ vẽ đồ thị thể hiện mối quan hệ giữa x và y.

Ví dụ: t = [0: pi/100: 2*pi] y = sin(t); plot(t, y) grid on polar(t, y)

Khi vẽ hình, chúng ta có thể sử dụng nhiều kiểu đường vẽ khác nhau bằng cách thay đổi thuộc tính cho hàm plot Ví dụ, để tạo đồ thị của hàm sin, ta có thể sử dụng đoạn mã sau: t = [0: pi/100: 2*pi]; y = sin(t); plot(t, y, '.'); % sử dụng đường chấm chấm Đừng quên bật lưới bằng cách sử dụng lệnh grid on.

5 Đặc t ả màu và kích thước đường v ẽ Đểđặc tả màu và kích thước đường vẽ ta dùng các tham số sau:

- LineWidth: độ rộng đường thẳng, tính bằng sốđiểm

- MarkerEdgeColor: màu của các cạnh của khối đánh dấu

- MarkerFaceColor: màu của khối đánh dấu

- MarkerSize: kích thước của khối đánh dấu

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

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

Mã Kiểu đánh dấu Mã Kiểu đánh dấu

+ Dấu cộng Điểm o Vòng tròn x Chữ thập

* Dấu sao s Hình vuông d Hạt kim cương v Điểm tam giác hướng xuống

^ Điểm tam giác hướng lên < Tam giác sang trái

> Tam giác sang phải h Lục giác p Ngũ giác

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

Mã Kiểu đường Mã Kiểu đường

- Đường liền : Đường chấm chấm

Đường nét đứt - Đường chấm gạch

Ta xét chương trình dothi.m như sau: x = ‐pi : pi/10 : pi; y = tan(sin(x)) ‐ sin(tan(x)); plot(x, y, ʹ‐‐ rs’, ʹ LineWidth ʹ, 2, ʹ MarkerEdgeColorʹ,ʹkʹ, ʹMarkerFaceColorʹ,ʹgʹ, ʹMarkerSizeʹ, 10)

Chương trình này sẽ vẽđường cong y = f(x) có các đặc tả sau :

‐ Đường vẽ là đường đứt nét(‐‐)

‐ Khối đánh dấu hình vuông (s), đường vẽ màu đỏ(r)

‐ Các cạnh của khối đánh màu đen

‐ Khối đánh dấu màu green

‐ Kích thước khối đánh dấu 10 point

6 Thêm đường v ẽ vào đồ th ị đ ã có Để làm điều này ta dùng lệnh hold Khi ta đánh lệnh hold on thì Matlab không xoá đồ thị đang có Nó thêm số liệu vào đồ thị mới này Nếu phạm vi giá trị của đồ thị mới vượt quá các giá trị của trục toạđộ cũ thì nó sẽđịnh lại tỉ lệ xích

Ví dụ: plot(sin(x)); hold all plot(sin(x+(pi/4)));

7 Ch ỉ v ẽ các điểm s ố li ệ u Để vẽ các điểm đánh dấu mà không nối chúng lại với nhau ta dùng đặc tả nói rằng không có các đường nối giữa các điểm, nghĩa là ta gọi hàm plot chỉ với đặc tả màu và điểm đánh dấu Ví dụ: xét chương trình như sau: x = ‐pi : pi/10 : pi;

Trang 26 y = tan(sin(x)) ‐ sin(tan(x)); plot(x, y, ʹsʹ,ʹMarkerEdgeColorʹ,ʹkʹ)

8 V ẽ các điểm và đường Để vẽ cả các điểm đánh dấu và đường nối giữa chúng ta cần mô tả kiểu đường và kiểu điểm Ta xét đoạn chương trình như sau: x = 0:pi/15:4*pi; y = exp(2*sin(x)); plot(x, y, ʹ‐ r ʹ, x, y, ʹokʹ) dùng vẽđường cong y = f(x) có đường nối liền, màu đỏ Điểm đánh dấu là chữ o có màu đen

Lệnh plotyy cho phép tạo đồ thị với hai trục y, giúp so sánh dễ dàng hơn khi giá trị trên hai trục có kiểu khác nhau Ví dụ, trong chương trình dothi.m, ta có thể sử dụng t = 0:900 để minh họa cho việc này.

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

10 V ẽ đường cong v ới s ố li ệu 3D

Nếu x, y, z là 3 vec tơ có cùng độ dài thì plot3 sẽ vẽđường cong 3D Ta viết chương trình duongcong3D.m như sau: t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square; grid on

11 Đặt các thông s ố cho tr ụ c

Khi tạo hình vẽ trong Matlab, phần mềm sẽ tự động xác định giới hạn trục tọa độ và khoảng cách đánh dấu dựa trên dữ liệu Tuy nhiên, người dùng có thể tùy chỉnh phạm vi giá trị trên trục và khoảng cách đánh dấu theo ý muốn bằng cách sử dụng lệnh thích hợp.

- axis đặt lại các giá trị trên trục toạđộ

- axes tạo một trục toạđộ mới với các đặc tính được mô tả

- get và set: cho phép xác định và đặt các thuộc tính của trục toạđộ đang có

- gca: trở về trục toạđộ cũ

Matlab cho phép người dùng chọn giới hạn trên trục tọa độ và khoảng cách đánh dấu dựa trên dữ liệu được sử dụng để vẽ Để điều chỉnh các giới hạn này, bạn có thể sử dụng lệnh axis với cú pháp: axis [xmin, xmax, ymin, ymax].

Ta xét chương trình thongso.m như sau: x = 0:0.025:pi/2; plot(x, tan(x), ʹ‐ ro ʹ) axis([0 pi/2 0 5])

Trong Matlab, việc chia vạch trên trục dựa vào phạm vi dữ liệu và thực hiện chia đều có thể được thực hiện bằng cách sử dụng các thông số xtick và ytick Các thông số này cho phép người dùng xác định các giá trị cụ thể cho vạch chia bằng cách sử dụng một vectơ tăng dần.

Ví dụ: xét chương trình như sau: x = ‐pi: 1: pi; y = sin(x); plot(x, y) set(gca, ʹxtickʹ, ‐pi :pi/2:p); set(gca, ʹxticklabelʹ, {ʹ‐ pi ʹ, ʹ ‐ pi/2 ʹ, ʹ0ʹ, ʹpi/2ʹ, ʹpiʹ})

12 Ghi nhãn lên các tr ục to ạ độ

Matlab cung cấp các lệnh ghi nhãn lên đồ hoạ gồm : - title: thêm nhãn vào đồ hoạ

- xlabel: thêm nhãn vào trục x

- ylabel: thêm nhãn vào trục y

- zlabel: thêm nhãn vào trục z

- legend: thêm chú giải vào đồ thị

- text: hiển thị chuỗi văn bản ở vị trí nhất định

- gtext: đặt văn bản lên đồ hoạ nhờ chuột

- \sl: oblique font (chữ nghiêng)

Các kí tựđặc biệt xem trong String properties của Help

Để thêm nhãn vào các trục tọa độ trong đồ thị, ta sử dụng các lệnh xlabel, ylabel và zlabel Ngoài ra, hàm text cho phép chèn văn bản vào bất kỳ vị trí nào trên hình vẽ Ví dụ, với đoạn mã sau: x = -pi: 1: pi; y = sin(x); plot(x, y) xlabel('t = 0 to 2\pi', 'Fontsize', 16) ylabel('sin(t)', 'Fontsize', 16) title('\it{Giá trị của sin từ zero đến 2 pi}', 'Fontsize', 16) text(3*pi/4, sin(3*pi/4), '\leftarrow sin(t) = 0.707', 'FontSize', 12), ta có thể dễ dàng tạo ra một đồ thị với nhãn và chú thích rõ ràng.

13 Định v ị văn b ản trên hình v ẽ

Chúng ta có thể sử dụng đối tượng văn bản trong Matlab để ghi chú các trục tại vị trí tùy ý Matlab sẽ tự động định vị văn bản dựa trên đơn vị dữ liệu của trục.

Ví dụđể vẽ hàm y = Ae αt với A = 0.25 với t = 0 đến 900 và α = 0.005 ta viết chương trình như sau: t = 0: 900; y = 0.25*exp(-0.005*t);

Trang 30 plot(t, 0.25*exp(-0.005*t)) plot(t,y) text(300,.25*exp(-.005*300),

'\bullet\leftarrow\fontname{times}0.25{\ite}^{‐ 0.005{\itt}} tai, {\itt} = 300',

Tham số HorizontalAlignment và VerticalAlignment định vị văn bản so với các tọa độ x, y, z đã cho

14 Đồ ho ạ đặc bi ệ t a Kh ố i và vùng Đồ hoạ khối và vùng biểu diễn số liệu là vec tơ hay ma trận MATLAB cung cấp các hàm đồ hoạ khối và vùng:

- bar: hiển thị các cột của ma trận m*n như là m nhóm, mỗi nhóm có n bar

- barh: hiển thị các cột của ma trận m*n như là m nhóm, mỗi nhóm có n bar nằm ngang

- bar3: hiển thị các cột của ma trận m*n như là m nhóm, mỗi nhóm có n bar dạng 3D

- bar3h: hiển thị các cột của ma trận m*n như là m nhóm, mỗi nhóm có n bar dạng 3D nằm ngang

Mặc định, mỗi phần tử của ma trận được biểu diễn bằng một bar Ta xét chương trình như sau:

1 5 8]; bar(y) b Mô t ả d ữ li ệ u trên tr ụ c

Để mô tả dữ liệu trên trục trong chương trình, chúng ta sử dụng các hàm xlabel và ylabel Ví dụ, với dữ liệu nhiệt độ nhdo = [29 23 27 25 20 23 23 27] và các ngày ngay = 0:5:35, ta có thể sử dụng lệnh bar(ngay, nhdo) để vẽ biểu đồ Sau đó, ta thêm nhãn cho trục x bằng xlabel('Ngày') và cho trục y bằng ylabel('Nhiệt độ (^{o}C)') Để điều chỉnh giới hạn trục y, ta sử dụng set(gca,'YLim',[15 30],'Layer','top') và bật lưới với grid on.

Mặc định, trục y có giá trị từ 0 đến 30 Để hiển thị nhiệt độ trong khoảng từ 15 đến 30, ta cần thay đổi phạm vi giá trị của trục y bằng cách sử dụng lệnh: set(gca, 'YLim', [15 30], 'Layer', 'top') Sau khi thực hiện, phạm vi giá trị của trục y trên đồ thị sẽ được cập nhật.

LẬ P TRÌNH GIAO DI ỆN NGƯỜ I DÙNG (GUI)

Chương này sẽ hướng dẫn người dùng về lập trình cửa sổ, một phương pháp lập trình giao diện người dùng phổ biến trong các ngôn ngữ lập trình cấp cao hiện nay.

Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command:

Cửa sổ GUIDE Quick Start hiện ra như sau:

Trong cửa sổ GUIDE Quick Start có nhiều lựa chọn theo các khuôn mẫu như sau:

Thẻ Create New GUI : Tạo một hộp thoại GUI mới theo một trong các loại sau:

- Blank GUI (Default): Hộp thoại trống, không có một điều khiển uicontrol nào cả

- GUI with Uicontrols: Hộp thoại với một vài uicontrol như button,

- GUI with Axes and Menu: Hộp thoại với một uicontrol axes và button, các menu để hiển thị đồ thị

- Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No

Thẻ Open Existing GUI: giúp người dùng mở một project có sẵn đã tạo trước.

Trong hướng dẫn này, khi tạo một project mới sẽ chọn Blank GUI

2 L ập tr ình giao di ện với Blank GUI

Giao diện rất giống với các chương trình lập trình giao diện như Visual Basic, Visual

C++, C# Di chuột qua các biểu tượng ở bên trái sẽ thấy tên của các điều khiển

Sau đây là một sốđiều khiển thường dùng:

 Push Button: Là các nút bấm như nút OK, Cancel mà ta vẫn bấm (tương tự Button trong các ngôn ngữ bậc cao)

 Slider: Thanh trượt có một con trượt chạy trên đó.

 Radio Button: Chọn lựa 1 điều kiện trong một tập điều kiện

 Check Box: Chọn lựa nhiều điều kiện trong một tập điều kiện

 Edit Text: Là một ô cho người dung nhập văn bản

 Static Text: Là ô hiễn thị văn bản của người dùng

 Pop-up Menu: Người dùng chọn một đối tượng trong danh sách sổ xuống

 List Box: Cho phép người dùng chọn 1 đối tượng trong danh sách hiện ra

 Axes: Thực hiện vẽ hệ trục tọa độ

 Panel: Là một dạng phân ô của các thành phần trên giao diện

 Button Group: Nhóm các button

 ActiveX Control: Các Control do người dung nhúng thêm vào

 Toggle Button: Dạng nút bấm bật - tắt

Phía trên cùng là menu, trọng nhất là menu Tools có:

Để chạy chương trình đã viết, người dùng cần nhấn tổ hợp phím Ctrl + T Hệ thống sẽ thông báo lỗi nếu chương trình chứa sai sót Lưu ý rằng trước khi thực hiện, người dùng phải lưu lại ứng dụng.

 Align Object: dùng để sắp xếp các điều khiển và căn lề cho các đối tượng

 Grid and Rulers: Hiễn thị lưới và thước trong giao diện

 Menu Editor: Tạo menu cho ứng dụng

 Tab Order Editor: sắp xếp thứ tự các xuất hiện chuột lên đối tượng khi nhấn phím Tab lúc chạy ứng dụng

 Gui Options: Một số lựa chọn cho giao diện GUI

Khi bạn lưu tài liệu (bằng cách chọn File\Save hoặc nhấn Ctrl + S) với một tên nhất định (ví dụ: vidu), hệ thống sẽ hiển thị đồng thời hai cửa sổ: cửa sổ soạn thảo và cửa sổ thiết kế Trong thư mục nơi bạn đã lưu, sẽ có hai tập tin được tạo ra.

 vidu.fig: Tập tin này chứa giao diện của chương trình, là nơi cho người dung thiết kế bằng cách kéo thảcác điều khiển để tạo ứng dụng

 vidu.m: tập tin này chứa các mã thực thi cho chương trình như các hàm khởi tạo, các hàm callback

3 Kéo th ả và thi ết lập thuộc tính cho các điều khiển

Ví dụ: Thực hiện chương trình cho người dùng nhập vào hai số, khi nhấn nút sẽ hiễn thị kết quả phép tính cộng của 2 số vừa nhập

Thực hiện các bước như sau:

- Tạo một Blank GUI: Vào File\New\GUI chọn Blank GUI, đặt tên là vidu.fig

- Kéo thả vào trong giao diện 2 Edit Text, 1 Static Box và 1 Push Button

Click đôivào Edit Text để xuất hiện cửa sổ các thuộc tính của điều khiển như sau:

Một số thuộc tính quan trọng nhất của Edit Box bao gồm:

 Tag: đây là tên của điều khiển Dùng tên này có thểthao tác đến các thuộc tính của đối tượng Ởđây ta đặt tên là: txtX

 String: là xâu kí tự hiện lên Edit Box Có thểđể trống hoặc thiết lập bằng 0

Tương tự, thay đổi thuộc tính tag của Edit Box thứ 2 thành txtY, Static Box cũng tương tự thành txtKetQua

Với Push Button: thuộc tính tag đặt là cmdCalculate, String đặt là “ket qua”

4 Vi ết lệnh cho chương tr ình

Chương trình có tác dụng khi nhấn vào nút Push Button sẽ hiện lên kết quả ở Static Box

Khi nhấn nút Push Button, cần viết hàm Callback để xử lý sự kiện này Mỗi điều khiển đều có hàm callback, tương tự như hàm ngắt trong vi điều khiển.

Click chuột phải vào nút “+” chọn View Callbacks\ Callback:

Trong phần này còn một số hàm nữa sẽ giới thiệu sau

Nhìn vào định nghĩa của hàm trong Editor ta sẽ thấy là: hàm này được thực hiện khi nhấn vào nút buttonCalculate

Hàm có một số tham số:

 hObject : handle của điều khiển buttonCalculate

 eventdata: dữ liệu khi sự kiện xẩy ra

 handles: là một cấu trúc chứa tất cả các điều khiển và dữ liệu người dùng, dùng để truy xuất các điều khiển khác

Để truy xuất thuộc tính string của các điều khiển như txtX, txtY, và txtKetQua, ta sử dụng lệnh get và set thông qua thuộc tính tag của các điều khiển Cụ thể, cú pháp để lấy giá trị là get(handles.tag_dieu_khien, 'ten thuoc tinh') và để thiết lập giá trị là set(handles.tag_dieu_khien, 'ten_thuoc_tinh', gia_tri).

Một hàm quan trọng nữa biến từ chuỗi sang số: str2num và num2str để biến trở lại Vậy chúng ta sẽ viết hàm như sau:

Nhấn nút Run kiểm tra kết quả:

5 Các tính ch ất của các điều khiển trong GUIDE Matlab Để hiện cửa sổ các tính chất Property Inspector của một điều khiển, có 3 cách sau:

 Nhấn đúp chuột vào mỗi điều khiển.

 Chọn điều khiển rồi vào menu View, chọn Property Inspector

Để sử dụng Property Inspector, hãy chọn điều khiển và nhấn vào biểu tượng gần M-file editor Cửa sổ Property Inspector sẽ xuất hiện, hiển thị thông tin tương ứng cho điều khiển mà bạn đã chọn.

Một vài tính chất chung của các điều khiển mà các bạn nên chú ý:

Tính ch ất (property) Giá tr ị (value) Mô t ả

Để xác định thời điểm hiển thị điều khiển trên giao diện, hãy đặt giá trị là "off" để ẩn điều khiển Giá trị mặc định của Max là 1, và giá trị tối đa này sẽ thay đổi tùy thuộc vào từng loại điều khiển cụ thể.

Min M ặc định l à 0 Giá tr ị nhỏ nhất, t ùy thu ộc v ào t ừng điều khiển.

Position Vector g ồm 4 phần tử

Kích thước của điều khiển v à v ị trí tương đối của nó với điều khiển chứa nó

String Chu ỗi hiển thị

Units Đơn vị đo lường dùng trong xác định vị trí

Value Vô hướng hoặc vector Giá trị của component, tùy thuộc vào từng component

Một thuộc tính cực kỳ quan trọng mà bạn cần chú ý là tag Tag này chính là tên của đối tượng và đóng vai trò duy nhất trong việc phân biệt đối tượng này với các đối tượng khác.

6 T ổng quan về h àm Callback trong l ập tr ình GUI

Sau khi hoàn thiện giao diện, lập trình các hành vi của các điều khiển trở nên rất quan trọng Điều này bao gồm việc lập trình các hàm Callback để đáp ứng các sự kiện như nhấn phím, kéo thanh trượt và chọn menu Hàm Callback tương tự như các hàm sự kiện trong các ngôn ngữ lập trình khác.

Callback là một hàm được sử dụng để mô tả hành vi của một thành phần giao diện người dùng (GUI) hoặc chính GUI figure, điều khiển các hành vi thông qua việc thực hiện các hành động được định nghĩa trong hàm Điều này giúp phản ứng với các sự kiện phát sinh từ thành phần đó, và phương pháp lập trình này thường được gọi là lập trình lái sự kiện (event driven programming).

Khi bạn nhấn một nút, hàm Callback tương ứng sẽ được gọi để thực hiện các tác vụ như vẽ đồ thị hoặc tính tổng Các loại hàm Callback này đóng vai trò quan trọng trong việc xử lý sự kiện trong lập trình.

Mỗi thành phần có nhiều hàm Callback khác nhau, sau đây liệt kê các loại hàm Callback và các điều khiển có thể có hàm này

Callback property Sự kiện xảy ra Thành phần có hàm này

ButtonDownFcn Thực hiện khi người dùng nhấn chuột lên hoặc trong 5 pixels của component hoặc figure Nếu là component thì thuộc tính Enable phải on ( tất nhiên rùi )

Axes,figure,button group,panel,user interfacecontrols

Callback Hành động của các component, ví dụ như thực thi khi người dùng click lên Push Button hoặc chọn một thành phần menu.

CloseRequestFcn Thực thi trước khi figure đóng Figure

CreateFcn Tạo các thành phần.Nó được dùng để khởi tạo các thành phần khi nó được

Axes,figure,button group,contextmenu,

Trang 51 tạo ra Nó thực thi sau khi thành phần hoặc figure được tạo, nhưng trước khi hiển thị lên trên giao diện người dùng menu,panel,user interfacecontrols

DeleteFcn Xóa thành phần Nó có thể được dùng để thực hiện hành động xóa bỏ trước khi component hoặc figure bị hủy bỏ.

The KeyPressFcn is executed when a user presses a key on the keyboard while the component or figure associated with that callback function is in focus This functionality is crucial for enhancing user interface controls, including axes, figures, button groups, context menus, and panels, ensuring a responsive and interactive experience.

KeyReleaseFcn Thực thi khi người dùng nhả một phím đang bấm và figure vẫn đang được focus.

ResizeFcn Thực thi khi người dùng thay đổi kích thước của panel, button group, hoặc figure với điều kiện thuộc tính Resize của figure = on.

SelectiononChangeFcn Thực thi khi người dùng lựa chọn một nút Radio Button khác hoặc toggle button khác trong thành phần Button Group

WindowButtonDownFcn Thực thi khi bạn nhấn chuột (trái hoặc phải) trong khi con trỏ vẫn nằm trong vùng cửa sổ figure.

WindowButtonMotionFcn Thực thi khi bạn di chuyển con trỏ trong vùng cửa sổ figure.

WindowButtonUpFcn Ban đầu bạn nhấn chuột (trái, hoặc phải) thì khi nhả phím đó ra thì hàm

Trang 52 này sẽ được gọi.

WindowScrollWheelFcn Thực thi khi nút cuộn của chuột cuộn trong khi figure vẫn trong tầm focus.

Có nhiều phương pháp để phát triển một chương trình máy tính bấm tay (Calculator) Bài viết này sẽ hướng dẫn bạn cách tạo ra một chương trình máy tính bấm tay đơn giản bằng cách sử dụng kỹ thuật Callback trong lập trình giao diện người dùng GUI.

Sử dụng GUIDE, thiết kế giao diện của chương trình như sau: Đặt thuộc tính cho các đối tượng như sau:

- Edit Text: Tagt1 (mặc định); FontSize ; Enable=Inactive; HorizontalAligment=right;

- Đặt thuộc tính Tag của tất cả các nút là: pushadd (ngoại trừ 3 nút: "=" và "%" và "C")

- Nút "C": Tag=pushclear Điều chỉnh kích thước và sử dụng công cụ "Align Objects" để sắp xếp vị trí các nút như hình trên

Lưu lại fig-file với tên mycalc.fig, trong file mycalc.m tìm các hàm tương ứng và thêm vào các lệnh sau:

The function `pushadd_Callback` is triggered when the button is pressed, retrieving the current text from `edit1` and the string from the button It concatenates these two strings and updates `edit1` with the new combined text.

The function `pushequal_Callback` is triggered when the button is pressed, retrieving the string input from `edit1` It attempts to evaluate the input as a mathematical expression and displays the result in the same field If an error occurs during evaluation, the error message is shown instead, ensuring user feedback on invalid inputs.

MỘ T S Ố PHƯƠNG PHÁP XỬ LÝ TÍNH TOÁN TRÊN MATLAB

1 Tính định thức của ma trận

Cho một ma trận vuông cấp n Ta cần tìm định thức của nó Trước hết nhắc lại một số tính chất quan trọng của định thức:

- Nếu nhân tất cả các phần tử của một hàng (hay cột) với k thì định thức được nhân với k

- Định thức không đổi nếu ta cộng thêm vào một hàng tổ hợp tuyến tính của các hàng còn lại

- Nếu đổi chỗ hai hàng cho nhau thì định thức đổi dấu

Trước khi định nghĩa về định thức, chúng ta cần hiểu khái niệm hoán vị và phép thế Hoán vị là việc đổi chỗ các số trong một dãy, ví dụ như 123 và 132 là các hoán vị của dãy số {1, 2, 3} Trong hoán vị α 1 α 2 …α i …α j …α n, ta nói α i tạo thành một nghịch thế với α j nếu i < j và α i > α j Chẳng hạn, trong hoán vị 1432, số 4 có nghịch thế với số 3, số 4 với số 2, và số 3 với số 2 Một hoán vị được gọi là chẵn nếu tổng số nghịch thế là một số chẵn, và lẻ nếu ngược lại; do đó, 1432 là một hoán vị lẻ.

Cho một dãy số, nếu ta tạo ra một dãy số mới bằng cách đổi chỗ các phần tử cho nhau thì ta đã thực hiện một phép thế

3 4 1 p 2 là phép thế biến 2 thành 1, 1 thành 4, 4 thành 2 và 3 thành 3

Phép thế được phân loại thành hai loại: chẵn và lẻ Một phép thế được gọi là chẵn khi tính chẵn lẻ của dòng trên và dòng dưới giống nhau, trong khi đó, nếu tính chẵn lẻ khác nhau, phép thế đó được coi là lẻ.

Cho ma trận vuông [A] cấp n, với các phần tử hàng thứ i là a i,1, a i,2,…, a i,n và các phần tử cột thứ j là a 1,j, a 2,j,…, a n,j Hàng thứ i được coi là một vector, ký hiệu là A i*, trong khi cột thứ j cũng được coi là một vector, ký hiệu là A *j Mỗi phép thế sẽ được thực hiện dựa trên các vector này.

Trước mỗi tích (2) ta đặt dấu + nếu và dấu ‐ nếu phép thế (1) lẻ Sau đó ta lập tổng của n! tích có dấu như vậy, nghĩa là tổng:

 p (  1 ) t ( p ) a i 1 j 1 a i 2 j 2 a i n j n (3) trong đó: t(p) = 1 nếu phép thế p lẻ t(p) = 0 nếu phép thế p chẵn

Tổng (4) được gọi là định thức của ma trận vuông [A], cấp n

Ta xây dựng hàm determinant() để tính định thức của ma trận theo định nghĩa: function d = determinant(A)

% DETERMINANT tinh dinh thuc theo dinh nghia

[m, n] = size(A); if ( m ~= n ) fprintf ( ʹ\nʹ ); fprintf ( ʹ Chi ma tran vuong moi co dinh thuc!\nʹ ); return end p = zeros(1, n); nf = prod([1:n]); d = 0.0; for i = 1:nf p = nextperm(p); s = permsign(p); x = diag(A([1:n],p)); 91 d = d + s*prod(x);

Trang 57 end function psign = permsign(p)

% PERMSIGN tra ve dau phep the

% ‐1, neu phep the le n = length ( p ); psign = 1; for i = 1:n‐ 1 j = i; while (p(j) ~= i) j = j + 1; end if ( j ~= i ) temp = p(i); p(i) = p(j); p(j) = temp; psign = ‐ psign; end end function q = nextperm(p) n = length(p); q = p; if(n == 1) q = 1; elseif (q == 0) q = [1:n]; else i = n ‐ 1;

Trang 58 while (q(i) > q(i+1)) i = i ‐ 1; if (i == 0) break; 92 end end if (i == 0) q = [1:n]; else j = n; while (q(j) < q(i)) j = j ‐ 1; end t = q(j); q(j) = q(i); q(i) = t; q(i+1:n) = q(n:‐ 1:i+1); end end Để tính định thức ta dùng chương trình ctdeterminant.m: clear all, clc

2 Ngh ịch đảo ma trận bằng cách d ùng Minor

Cho ma trận [A], ta có:

Trong đó: (a -1 ) i,j là phần tửở hàng i, cột j của ma trận [A] ‐ 1 , A i,j là phần bù đại số của phần tử a i,j của ma trận [A]

Ta xây dựng hàm minorinv() để thực hiện thuật toán trên: function c = minorinv(a)

To compute the inverse of a matrix using the minor algorithm, first determine the size of the matrix with `n = size(a, 1)` and calculate its determinant with `ms = det(a)` Next, iterate through each element using nested loops to compute the cofactor for each position with `b = cofactor(a, i, k)` and normalize it by the determinant, storing the results in matrix `c` Finally, transpose the matrix with `c = transpose(c)` The process can be executed using the script `ctminorinv.m`, as demonstrated with the example matrix `a = [1 3 5; 3 4 9; 5 9 6]`, which can be inverted by calling `b = minorinv(a)`.

3 Ngh ịch đảo ma trận bằng thuật toán gauss -Jordan

Cho ma trận [A] và ma trận đơn vị [E] tươngứng Dạng của ma trận [E] cấp 4, là:

Để tìm ma trận nghịch đảo [A] ‐ 1, chúng ta cần áp dụng phương pháp loại trừ qua n giai đoạn Mỗi giai đoạn k sẽ bao gồm hai bước thực hiện cụ thể.

- Chuẩn hoá phần tử a kk bằng cách nhân hàng với nghịch đảo của nó

Để biến đổi ma trận, ta cần làm cho tất cả các phần tử phía trên và phía dưới đường chéo đến cột thứ k bằng không Khi k bằng n, ma trận [A](k) sẽ trở thành ma trận đơn vị, và ma trận [E] sẽ trở thành [A] ‐ 1.

Ta xây dựng một hàm nghịch đảo invmat(): function x = invmat(a)

%Cu phap: x = invmat(a) k = size(a, 1); n = k; b = eye(n); a = [a, b]; i = 1; while i Save and naming it GPTB2.fig This action will automatically generate a file named GPTB2.m In this file, locate the start_callback function and insert the following lines of code.

Hàm set là hàm đặt thuộc tính cho điều khiển

Hàm get là hàm lấy giá trị thuộc tính của điều khiển

Hàm str2double là hàm biến chuỗi thành số

Cuối cùng, hãy lưu file với tên GPTB2.m và chạy chương trình bằng cách nhấn F5 hoặc nút run hình tam giác màu xanh Nhập các hệ số a, b, c và nhấn nút "Bắt đầu" để xem kết quả.

Trong chương này, sinh viên sẽ được giới thiệu về các phương pháp lập trình phức tạp trên Matlab Qua những ví dụ thực tiễn, sinh viên sẽ nắm bắt được cách thức xử lý và áp dụng các kỹ thuật lập trình hiện đại trên nền tảng Matlab.

Hướ ng d ẫ n s ử d ụ ng công c ụ Simulink

Simulink là một công cụ mạnh mẽ trong Matlab, được sử dụng để mô hình hóa, mô phỏng và phân tích các hệ thống động Giao diện đồ họa của Simulink giúp đơn giản hóa quá trình xây dựng mô hình thông qua các thao tác nhấp chuột và kéo thả Công cụ này đi kèm với một bộ thư viện khối phong phú, hỗ trợ cả phân tích tuyến tính và phi tuyến, mang lại sự linh hoạt cho người dùng trong việc phát triển các mô hình phức tạp.

Simulink là một thành phần thiết yếu của Matlab, cho phép người dùng dễ dàng chuyển đổi giữa hai môi trường trong quá trình phân tích, từ đó tận dụng tối đa những ưu điểm của cả Simulink và Matlab.

Có thể mở Simulink bằng 2 cách:

- Click vào biểu tượng như hình dưới (Simulink icon)

- Từ cửa sổ lệnh, đánh lệnh simulink và enter

Cửa sổthư viện Simulink sẽ hiển thị:

Tạo một mô hình mới bằng cách:

- Click vào icon New model hoặc gõ Ctrl-N

Cửa sổ xây dựng mô hình xuất hiện:

Tạo các khối: từthư viện Simulink chọn khối cần dùng, nhấp chuột vào và kéo ra ra cửa sổ mô hình:

Lưu trữ mô hình bằng lệnh Save (File\Save) hoặc nhấp vào icon Save Dịch chuyển các khối đơn giản bằng cách nhấp vào khối đó và kéo thả:

Nối tín hiệu: Đưa con chuột tới ngõ ra của khối (dấu “>”), khi đó con chuột sẽ có dạng

“+” Kéo rê chuột tới ngõ vào của một khối khác và thảra để kết nối tín hiệu

Mô phỏng mô hình: Dùng lệnh Start (Menu Simulation\Start) hoặc nhấp chuột vào icon Start

Xem tín hiệu từ Scope: nhấp đôi vào khối Scope:

Chỉnh thông số của một khối bằng cách nhấp đôi vào khối cần chỉnh

Before simulating a Simulink model, it's essential to configure the simulation parameters by selecting the Simulation menu and then Configuration Parameters In the Configuration Parameters window, users can set various options such as Start time, Stop time (in seconds), the Solver method, and Solver options After making these adjustments, simply click the OK button to proceed.

Ngày đăng: 19/12/2022, 09:11

w