✨MATLAB

MATLAB

MATLAB là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác.

Với thư viện Toolbox, MATLAB cho phép mô phỏng tính toán, thực nghiệm nhiều mô hình trong thực tế và kỹ thuật.

Lịch sử

Matlab là viết tắt từ "MATrix LABoratory", được Cleve Moler phát minh vào cuối thập niên 1970, và sau đó là chủ nhiệm khoa máy tính tại Đại học New Mexico.

MATLAB, nguyên sơ được viết bởi ngôn ngữ Fortran, cho đến 1980 nó vẫn chỉ là một bộ phận được dùng nội bộ của Đại học Stanford.

Năm 1983, Jack Little, một người đã học ở MIT và Stanford, đã viết lại MATLAB bằng ngôn ngữ C và nó được xây dựng thêm các thư viện phục vụ cho thiết kế hệ thống điều khiển, hệ thống hộp công cụ (tool box), mô phỏng... Jack xây dựng MATLAB trở thành mô hình ngôn ngữ lập trình trên cơ sở ma trận (matrix-based programming language).

Steve Bangert là người đã viết trình thông dịch cho MATLAB. Công việc này kéo dài gần 1½ năm. Sau này, Jack Little kết hợp với Moler và Steve Bangert quyết định đưa MATLAB thành dự án thương mại - công ty The MathWorks ra đời thời gian này - năm 1984.

Phiên bản đầu tiên MATLAB 1.0 ra dời năm 1984 viết bằng C cho MS-DOS PC được phát hành đầu tiên tại IEEE Conference on Design and Control (Hội nghị IEEE về thiết kế và điều khiển) tại Las Vegas, Nevada. Ban đầu Matlab được phát triển để hỗ trợ sinh viên sử dụng hai thư viện  LINPACK và EISPACK dùng cho đại số tuyến tính (viết bằng Fortran) mà không cần biết lập trình Fortran.

Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX.

Năm 1987, MATLAB 3 phát hành.

Năm 1990 Simulink 1.0 được phát hành gói chung với MATLAB.

Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D đồ họa màu và các ma trận truy tìm. Năm này cũng cho phát hành phiên bản MATLAB Student Edition (MATLAB ấn bản cho học sinh).

Năm 1993 MATLAB cho MS Windows ra đời. Đồng thời công ty này có trang web là www.mathworks.com

Năm 1995 MATLAB cho Linux ra đời. Trình dịch MATLAB có khả năng chuyển dịch từ ngôn ngữ MATLAB sang ngôn ngữ C cũng được phát hành trong dịp này.

Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ liệu, hình ảnh hóa, bộ truy sửa lỗi (debugger), và bộ tạo dựng GUI.

Năm 2000 MATLAB 6 cho đổi mới môi trường làm việc MATLAB, thay thế LINPACK và EISPACK bằng LAPACK và BLAS.

Năm 2002 MATLAB 6.5 phát hành đã cải thiện tốc độ tính toán, sử dụng phương pháp dịch JIT (Just in Time) và tái hỗ trợ MAC.

Năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và có môi trường phân tích số liệu tương tác.

Đến tháng 12, 2008, phiên bản 7.7 được phát hành với SP3 cải thiện Simulink cùng với hơn 75 sản phẩm khác.

Năm 2009 cho ra đời 2 phiên bản 7.8 (R2009a) và 7.9 (R2009b).

Năm 2010 phiên bản 7.10 (R2010a) cũng đã được phát hành.

Matlab được dùng rộng rãi trong giáo dục, phổ biến nhất là giải các bài toán số trị (cả đại số tuyến tính lẫn giải tích) trong nhiều lĩnh vực kĩ thuật.

Ngôn ngữ lập trình

Ngôn ngữ lập trình dùng trong hệ tính toán số cũng có tên gọi là MATLAB. Nó thuộc kiểu lập trình thủ tục (với một số đặc điểm của lập trình hướng đối tượng mới được bổ sung trong các phiên bản gần đây.

Các kiểu dữ liệu

MatLab có đầy đủ các kiểu dữ liệu đơn giản như: số nguyên, số thực, ký tự, logic (boolean).

Chuỗi ký tự được đặt trong dấu nháy đơn hoặc nháy kép, chẳng hạn "Viet Nam".

Kiểu dãy (sequence) có dạng dau:buoc:cuoi bao gồm một véc-tơ gồm các phần tử bắt đầu từ số dau tăng dần theo từng buoc cho đến bằng (không vượt quá) số cuoi. Kết quả cho ra một véc-tơ hàng:

1.2:0.2:1.7 %chú thích: tương đương với [1.2 1.4 1.6] 1.2:0.2:1.8 %chú thích: tương đương với [1.2 1.4 1.6 1.8]

Kiểu ma trận đóng vai trò trung tâm trong MatLab. Ví dụ một ma trận hai hàng ba cột như sau (hết một hàng cần dấu chấm phẩy để phân tách, nhưng không nhất thiết xuống dòng):

[ -3 4 5.2; 2.1 -8 7.6 ]

MatLab còn có một số kiểu dữ liệu khác cao cấp hơn: kiểu cell, kiểu struct (bản ghi).

Các phép tính với ma trận

Các phép cộng trừ hai ma trận cùng kích thước được thực hiện bình thường. Đặc biệt với phép nhân, MatLab phân biệt hai toán tử: dành cho phép nhân ma trận và . dành cho nhân từng cặp phần tử tương ứng của hai ma trận.

>> a = [2 3; 2 4] 2 3 2 4

a * a % chính là bình phương ma trận A 10 18 12 22

a.* a % chỉ là bình phương TỪNG PHẦN TỬ của A 4 9 4 16

Với phép tính lũy thừa cũng tương tự. Chẳng hạn, với ví dụ trên ta có thể viết lần lượt là a^2a.^2.

Cú pháp

Trước đây MatLab không phân biệt chữ in, chữ thường (giống như Fortran). Các phiên hơn gần đây lại có sự phân biệt này (theo ngôn ngữ C). Các từ khóa đều viết chữ thường.

  • Lệnh gán có dạng giống như nhiều ngôn ngữ lập trình khác: tên_biến = giá_trị_biểu thức. Thông thường máy sẽ in ra kết quả của biến sau khi gán, nếu ta không kết thúc lệnh gán bởi dấu ;

Ví dụ

t = 2 * 3 % hiện thị t = 6 t = t + 1; % t có giá trị bằng 7 nhưng không hiển thị lên màn hình.
  • Khai báo hàm số (ví dụ như hàm bình phương tên tham số vào là x, tên tham số ra là y:

    function y = binhPhuong(x) y = x * x; end
  • Cấu trúc rẽ nhánh, lặp:

    for i = 1:3 % chú ý rằng vòng lặp theo dạng dãy disp(1/i) end

i = 0 while i < 4 i = i + 1; % không cho hiển thị ra màn hình disp(i) % hiển thị giá trị i end

Cú pháp đặc biệt (syntactic sugar)

Để tăng tốc độ lập trình, nhất là thao tác từ dấu nhắc lệnh, MatLab cho phép nhiều kiểu cú pháp viết tắt. Chẳng hạn để xem hướng dẫn về lệnh plot thì hai câu lệnh sau là tương đương:

doc('plot') doc plot % chú thích: cách viết gọn, đồng thời bỏ dấu ngoặc tròn và dấu nháy

Một ví dụ nữa là các số trong một véc-tơ hàng không cần có dấu phẩy ngăn cách

v1 = [2, 3, 4] v2 = [5 6 7] % cũng hợp lệ!

Và ngay cả cách gọi file lệnh từ dấu nhắc cũng là một dạng rút gọn đặc biệt. Chẳng hạn ta cần chạy file tinhtong.m trong thư mục hiện hành:

>> tinhtong

Tính năng vẽ đồ thị

Vẽ đồ thị là một tính năng được trau chuốt trong MatLab; với rất nhiều kiểu đồ thị khác nhau như biểu đồ dạng đường, biểu đồ chấm điểm, các lớp màu (patch) hai chiều, đường đồng mức và các đường cong, mặt cong ba chiều. Ngoài ra MatLab còn cung cấp giao diện để người dùng trực tiếp biên tập hình vẽ, điền vào các ghi chú theo ý muốn.

;Vẽ đồ thị dạng đường Giả sử có dãy số liệu V đo theo thời gian t. Trong MatLab, Vt đều có dạng vec tơ có cùng độ dài. Khi đó lệnh vẽ đồ thị với trục hoành là t và trục tung là V có dạng:

plot(t, V) xlabel('t (s)') % viết tiêu đề các trục ylabel('V (m/s)')

;Vẽ đồ thị dạng lớp màu Một cách hiệu quả để biểu thị các trường vật lý trong không gian hai chiều là dùng lớp màu. Chẳng hạn T là một ma trận 2 chiều lưu giữ giá trị nhiệt độ của một tấm kim loại hình chữ nhật, thì việc hiển thị phân phối nhiệt độ bằng một lớp màu được thực hiện dễ dàng:

pcolor(T)

;Vẽ trường vec tơ Cũng như đồ thị lớp màu, việc hiển thị trường vec tơ rất cần thiết trong các ngành khoa học - vật lý. Để vẽ trường véc-tơ hai chiều của các ma trận uv, dùng lệnh:

quiver(u,v)
👁️ 3 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**MATLAB** là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay
MATLABSimulink có nhiều công cụ dễ ứng dụng, và những hàm tích hợp sẵn để giải hoặc mô phỏng những phương trình vi phân. Cuốn sách này trình bày cách sử dụng MATLAB để giải
Matlab Maxtrix Laboratory là một công cụ phần mềm của MathWork với giao diện cực mạnh cùng những lợi thế trong kỹ thuật lập trình đáp ứng được những vấn đề hết sức đa dạng
Nội dung sách gồm 2 phần - Sử dụng Matlab để giải Phương trình Vi phân Thường - Sử dụng Simulink để lập mô hình và giải phương trình vi phân. - Ứng dụng Matlab
Xử Lý Ảnh Số - Lý Thuyết Và Thực Thành Với Matlab cung cấp cho bạn đọc, nhất là các bạn sinh viên hay các học viên cao học những kiến thức cơ bản nhất
nhỏ|phải|Một đồ thị được biểu diễn bằng Octave. **Octave** là một môi trường tính toán tự do, sử dụng ngôn ngữ lập trình tựa như MATLAB. ## Lịch sử Octave bắt đầu được xây dựng
Trong sự phát triển nhanh chóng các hệ thống thông tin và truyền thông cùng với sự phát triển mạnh mẽ của các hệ thống máy tính , ngày nay mô phỏng đã trở thành
**Lý thuyết điều khiển tối ưu** là một phần mở rộng của phép tính biến phân, là một phương pháp tối ưu hóa cho các lý thuyết điều khiển phát sinh. Phương pháp này phần
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**Scilab** là gói phần mềm tính toán số phát triển từ năm 1990 bởi các nhà nghiên cứu từ INRIA và École nationale des ponts et chaussées (ENPC). Tạo ra vào tháng 5 năm 2003,
**Mô hình tài chính **là nhiệm vụ xây dựng một mô hình trừu tượng (một mô hình) về tình hình tài chính trong thế giới thực. Đây là một mô hình toán học được thiết
**Trường điều kiện ngẫu nhiên (CRFs)** là một dạng của Mô hình xác suất thường được áp dụng cho Dự đoán cấu trúc trong Nhận diện mẫu và Học máy. Một mô hình phân lớp

\exp\left(-\frac{1}{2}(x - \mu)^\top \Sigma^{-1} (x - \mu)\right)| cdf =| mean =\mu| median =\mu| mode =\mu| variance =\Sigma (ma trận hiệp phương sai)| skewness =0| kurtosis =0| entropy =\ln\left(\sqrt{(2\,\pi\,e)^N \left| \Sigma \right|}\right)\!| mgf =M_X(t)=
**Cleve Barry Moler** là một nhà toán học và lập trình viên máy tính chuyên ngành phân tích số. Nữa cuối thập niên 1970, ông là một trong những tác giả của thư viện LINPACK
Đây là bài con của **Trí tuệ nhân tạo**, nội dung chú trọng vào sự phát triển và **lịch sử ngành trí tuệ nhân tạo**. ## Sự phát triển của lý thuyết trí tuệ nhân
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
**OrCAD** — gói phần mềm dùng để tự động hóa thiết kế điện tử. Được dùng chính trong chế tạo các bản điện tử mạch in để chế tạo mạch in, cũng như để tạo
**CUDA** (_Compute Unified Device Architecture_ - Kiến trúc thiết bị tính toán hợp nhất) là một kiến trúc tính toán song song do NVIDIA phát triển. Nói một cách ngắn gọn, CUDA là động cơ
**LabVIEW** (viết tắt của nhóm từ **_Laboratory Virtual Instrumentation Engineering Workbench_**) là một phần mềm máy tính được phát triển bởi công ty National Instruments, Hoa Kỳ. LabVIEW còn được biết đến như là một
**Maple** là một gói phần mềm toán học thương mại phục vụ cho nhiều mục đích. Nó phát triển lần đầu tiên vào năm 1980 bởi Nhóm Tính toán Hình thức tại Đại học Waterloo
Trong đại số tuyến tính, **phân tích LU** (LU decomposition, LU factorization) là phương pháp phân tích ma trận thành tích của một ma trận tam giác dưới và một ma trận tam giác trên.
**Phân tập** là một phương pháp dùng trong viễn thông dùng để nâng cao độ tin cậy của việc truyền tín hiệu bằng cách truyền một tín hiệu giống nhau trên nhiều kênh truyền khác
Mục đích của **danh sách các ngôn ngữ lập trình** này là bao gồm tất cả các ngôn ngữ lập trình hiện tại đáng chú ý, được sử dụng hiện tại và những ngôn ngữ
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
Bài này nói về từ điển các chủ đề trong toán học. ## 0-9 * -0 * 0 * 6174 ## A * AES * ARCH * ARMA * Ada Lovelace * Adrien-Marie Legendre *
right|thumb|Bản đồ hiển thị các con sông lớn ở Bangladesh bao gồm Meghna. **Sông Meghna** () là một trong những con sông quan trọng nhất ở Bangladesh, một trong ba con sông hình thành đồng
Trong khoa học máy tính, **lập trình mảng** (tiếng Anh: _array programming_) là giải pháp cho phép áp dụng chương trình hoạt động lên toàn bộ tập các giá trị cùng một lúc. Các giải
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
Trong điện toán, **lập trình hướng khía cạnh** (tiếng Anh: _aspect-oriented programming_, viết tắt: _AOP_) là một mẫu hình lập trình nhằm tăng tính mô đun bằng cách cho phép phân tách những mối quan
**_2048_** là một trò chơi giải đố do tác giả Gabriele Cirulli, một lập trình viên web trẻ 19 tuổi người Ý, tạo ra vào tháng 3 năm 2014. Mục tiêu của trò chơi là
**Định dạng dấu phẩy động độ chính xác đơn** (đôi khi còn gọi là **FP32** hoặc **float32**) là một định dạng số máy tính, thường chiếm 32 bit trong bộ nhớ máy tính; nó có
**Xích Markov Monte Carlo** (tiếng Anh: _Markov chain Monte Carlo_, viết tắt _MCMC_) là một thuật toán để lấy mẫu từ phân phối xác suất. Bằng cách xây dựng một chuỗi Markov có phân phối
thumbnail|right|upright=1.35|Đồ thị của dưới dạng là hàm của một số thực dương Trong toán học, **logarit nhị phân** () là lũy thừa mà số cần phải được nâng lên để được số , nghĩa là