MATLAB là gì ?

MATLAB (matrix laboratory) là một môi trường tính toán số học đa ngôn ngữ và ngôn ngữ lập trình độc quyền được phát triển bởi MathWorks. MATLAB cho phép thao tác ma trận, vẽ các hàm và dữ liệu, thực hiện thuật toán, tạo giao diện người dùng và giao tiếp với các chương trình được viết bằng các ngôn ngữ khác, bao gồm C, C ++, C #, Java, Fortran và Python.

Mặc dù MATLAB chủ yếu dành cho máy tính số, một hộp công cụ tùy chọn sử dụng công cụ biểu tượng MuPAD, cho phép truy cập vào khả năng tính toán biểu tượng. Một gói bổ sung, Simulink, thêm mô phỏng đa miền đồ họa và thiết kế dựa trên mô hình cho các hệ thống động và nhúng.

Tính đến năm 2017, MATLAB có khoảng 1 triệu người dùng trên toàn ngành công nghiệp và giảng dạy. Người dùng MATLAB đến từ nhiều nền tảng khác nhau về kỹ thuật, khoa học và kinh tế.

Lịch sử:

-Cleve Moler- chủ tịch khoa khoa học máy tính tại Đại học New Mexico, bắt đầu phát triển MATLAB vào cuối những năm 1970. Ông đã thiết kế nó để cung cấp cho sinh viên của mình quyền truy cập vào LINPACK và EISPACK mà không cần phải học Fortran. Nó nhanh chóng lan rộng đến các trường đại học khác và tìm thấy sự hưởng ứng mạnh mẽ trong cộng đồng toán học ứng dụng. Jack Little là một kỹ sư làm cho Đại học Stanford năm 1983 đã được tiếp xúc với nó trong một chuyến thăm Moler. Nhận ra tiềm năng thương mại của nó, ông đã tham gia với Moler và Steve Bangert để viết lại MATLAB trong C và thành lập MathWorks vào năm 1984 để tiếp tục phát triển. Những thư viện viết lại này được gọi là JACKPAC. Năm 2000, MATLAB được viết lại để sử dụng một bộ thư viện mới hơn cho thao tác ma trận, LAPACK.

-MATLAB lần đầu tiên được chấp nhận bởi các nhà nghiên cứu và các học viên trong kỹ thuật điều khiển, chuyên môn của Little, nhưng nhanh chóng lan truyền sang nhiều lĩnh vực khác. Nó bây giờ cũng được sử dụng trong giáo dục, đặc biệt là giảng dạy của đại số tuyến tính, phân tích số, và được phổ biến giữa các nhà khoa học tham gia vào xử lý hình ảnh.

Cú pháp:

Ứng dụng MATLAB được xây dựng xung quanh ngôn ngữ mã MATLAB. Việc sử dụng phổ biến của ứng dụng MATLAB liên quan đến việc sử dụng Command Window làm một trình bao toán học tương tác hoặc thực thi các tệp văn bản có chứa mã MATLAB.

Biến:

Các biến được định nghĩa bằng toán tử gán, =. MATLAB là một ngôn ngữ lập trình được đánh máy yếu (một ngôn ngữ đánh máy yếu có quy tắc nhập sai hơn và có thể tạo ra kết quả không thể đoán trước hoặc có thể thực hiện chuyển đổi loại ngầm định khi chạy. Một khái niệm khác nhưng có liên quan là nhập ẩn. ) vì các kiểu được chuyển đổi hoàn toàn. Nó là một ngôn ngữ được đánh máy suy luận vì các biến có thể được gán mà không khai báo kiểu của chúng, trừ khi chúng được coi là đối tượng tượng trưng, và kiểu của chúng có thể thay đổi. Các giá trị có thể đến từ các hằng số, từ tính toán liên quan đến các giá trị của các biến khác, hoặc từ đầu ra của một hàm.

Ví dụ:

>> x = 17

x =

17

>> x = ‘hat’

x =

hat

>> y = x + 0

y =

104        97       116

>> x = [3*4, pi/2]

x =

12.0000    1.5708

>> y = 3*sin(x)

y =

-1.6097    3.0000

Vectơ và ma trận:

Một mảng đơn giản được định nghĩa bằng cách sử dụng cú pháp dấu hai chấm “:”. Ví dụ :

>> array = 1:2:9array= 1 3 5 7 9

định nghĩa một biến có tên là mảng (hoặc gán một giá trị mới cho một biến hiện có với tên mảng) là một mảng bao gồm các giá trị 1, 3, 5, 7 và 9. Tức là mảng bắt đầu tại 1 (giá trị ban đầu), gia số với mỗi bước từ giá trị trước đó bằng 2 (giá trị gia tăng), và dừng lại khi nó đạt đến (hoặc để tránh vượt quá) 9 (giá trị terminator).

>> array = 1:3:9array = 1 4 7

giá trị gia tăng thực sự có thể được bỏ qua khỏi cú pháp này (cùng với một trong các dấu hai chấm), để sử dụng giá trị mặc định là 1.

>> ari = 1:5ari = 1 2 3 4 5

gán cho biến có tên là ari một mảng với các giá trị 1, 2, 3, 4 và 5, vì giá trị mặc định của 1 được sử dụng làm số gia tăng.

Số mũ là dựa trên, quy ước thông thường cho các ma trận(là một mảng hình chữ nhật gồm các số, ký hiệu hoặc biểu thức, được sắp xếp theo hàng và cột) trong toán học, mặc dù không phải cho một số ngôn ngữ lập trình như C, C ++ và Java.

Các ma trận có thể được xác định bằng cách tách các phần tử của một hàng bằng khoảng trống hoặc dấu phẩy và sử dụng một dấu chấm phẩy để chấm dứt mỗi hàng. Danh sách các phần tử cần được bao quanh bởi dấu ngoặc vuông: []. Dấu ngoặc đơn: () được sử dụng để truy cập các phần tử và các mảng con (chúng cũng được sử dụng để biểu thị một danh sách đối số hàm).

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]A = 16  3  2 13  5 10 11  8  9  6  7 12  4 15 14  1 >> A(2,3)ans = 11

Một tập hợp của số mũ có thể được chỉ định bằng các biểu thức như “2: 4”, đánh giá thành [2, 3, 4]. Ví dụ, một submatrix được lấy từ các hàng từ 2 đến 4 và các cột từ 3 đến 4 có thể được viết như sau:

>> A(2:4,3:4)ans = 11 8 7 12 14 1

Một ma trận đơn vị có kích thước n có thể được tạo ra bằng cách sử dụng mắt hàm và ma trận của bất kỳ kích thước nào bằng 0 hoặc số có thể được sinh ra với các số 0 và các hàm tương ứng.

>> eye(3,3)ans = 1 0 0 0 1 0 0 0 1 >> zeros(2,3)ans = 0 0 0 0 0 0 >> ones(2,3)ans = 1 1 1 1 1 1

 

Chuyển vị một vector hoặc một ma trận được thực hiện bởi chức năng chuyển vế hoặc bằng cách thêm nguyên tố sau dấu chấm vào ma trận. Nếu không có dấu chấm Matlab sẽ thực hiện chuyển vị liên hợp.

>> A = [1 ; 2],  B = A.’, C = transpose(A)A =     1     2B =     1     2C =     1     2 >> D = [0 3 ; 1 5], D.’D =     0     3     1     5ans =     0     1     3     5

Hầu hết các hàm MATLAB có thể chấp nhận ma trận và sẽ áp dụng chính chúng cho mỗi phần tử. Ví dụ, mod (2 * J, n) sẽ nhân mỗi phần tử trong “J” cho 2, và sau đó giảm từng phần tử modulo “n”. MATLAB không bao gồm các vòng lặp “for” và “while”  tiêu chuẩn, nhưng (như trong các ứng dụng tương tự khác như R(R là một ngôn ngữ lập trình và môi trường phần mềm miễn phí cho máy tính thống kê và đồ họa được hỗ trợ bởi R Foundation for Computing Computing. Ngôn ngữ R được sử dụng rộng rãi trong số các nhà thống kê và người khai thác dữ liệu để phát triển phần mềm thống kê và phân tích dữ liệu.)), sử dụng ký pháp vectơ thường tạo ra mã nhanh hơn để thực thi. Mã này, được trích xuất từ hàm magic.m, tạo ra ma trận M cho các giá trị lẻ của n (hàm lưới MATLAB được sử dụng ở đây để tạo các ma trận vuông I và J chứa 1: n).

[J,I] = meshgrid(1:n);A = mod(I + J – (n + 3) / 2, n);B = mod(I + 2 * J – 2, n);M = n * A + B + 1;

 

Cấu trúc:

MATLAB có các kiểu dữ liệu cấu trúc. Vì tất cả các biến trong MATLAB là mảng, một tên đầy đủ hơn là “mảng cấu trúc”, trong đó mỗi phần tử của mảng có cùng tên trường. Ngoài ra, MATLAB được hỗ trợ tên trường động(tra cứu trường theo tên, thao tác trường, v.v.). Thật không may, MATLAB JIT không hỗ trợ cấu trúc MATLAB, do đó chỉ cần một bó đơn giản của các biến khác nhau vào một cấu trúc sẽ phát sinh chi phí.

Hàm số:

Khi tạo một hàm MATLAB, tên của tệp phải khớp với tên của hàm đầu tiên trong tệp. Tên hàm hợp lệ bắt đầu bằng ký tự chữ cái và có thể chứa chữ cái, số hoặc dấu gạch dưới. Các hàm thường phân biệt chữ hoa chữ thường.

Chức năng xử lý:

MATLAB hỗ trợ các phần tử của phép tính lambda bằng cách giới thiệu các hàm điều khiển, hoặc các hàm tham chiếu, được thực hiện trong các tệp .m hoặc các hàm ẩn danh / hàm lồng.

Hạng và lập trình hướng đối tượng:

MATLAB hỗ trợ lập trình hướng đối tượng bao gồm các lớp, kế thừa, công văn ảo, gói, ngữ nghĩa học theo giá trị và ngữ nghĩa học theo tham chiếu. Tuy nhiên, cú pháp và quy ước gọi là khác nhau đáng kể so với các ngôn ngữ khác. MATLAB có các lớp giá trị và các lớp tham chiếu, tùy thuộc vào việc lớp đó có xử lý như một lớp nổi trội (đối với các lớp tham chiếu) hay không (đối với các lớp giá trị).

Hành vi gọi phương thức khác nhau giữa các giá trị và các lớp tham chiếu. Ví dụ, một cách gọi đến một phương pháp.

object.method();

có thể thay đổi bất kỳ thành viên của đối tượng chỉ khi đối tượng là một thể hiện của một lớp tham chiếu.Một ví dụ về một lớp đơn giản được cung cấp dưới đây:

classdef hello    methods        function greet(this)            disp(‘Hello!’)        end    endend

Khi đưa vào một tệp có tên hello.m, điều này có thể được thực thi bằng các lệnh sau:

>> x = hello;>> x.greet();Hello!

Lập trình đồ họa và giao diện người dùng đồ họa:

MATLAB hỗ trợ phát triển các ứng dụng với các tính năng giao diện người dùng đồ họa (GUI). MATLAB bao gồm GUIDE  (môi trường phát triển GUI) để thiết kế đồ họa GUI. Nó cũng có các tính năng vẽ đồ thị tích hợp chặt chẽ. Ví dụ, hàm plot có thể được sử dụng để tạo ra một đồ thị từ hai vectơ x và y,Code:

x = 0:pi/100:2*pi;y = sin(x);plot(x,y)

tạo ra hình dưới đây của hàm sin:

Một chương trình MATLAB có thể xuất đồ họa ba chiều bằng cách sử dụng các chức năng functions surf, plot3 và mesh.

[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);

f = sinc(sqrt((X/pi).^2+(Y/pi).^2));

mesh(X,Y,f);

axis([-10 10 -10 10 -0.3 1])

xlabel(‘{\bfx}’)

ylabel(‘{\bfy}’)

zlabel(‘{\bfsinc} ({\bfR})’)

hidden off

Code này tạo ra một biểu đồ 3D khung dây của hàm sin không chuẩn hóa hai chiều:

Trong MATLAB, giao diện người dùng đồ họa có thể được lập trình bằng công cụ môi trường thiết kế GUI (GUIDE).

Giao tiếp với các ngôn ngữ lập trình khác :

MATLAB có thể gọi các hàm và các chương trình con được viết bằng ngôn ngữ lập trình C hoặc Fortran. Một hàm bao bọc được tạo cho phép các kiểu dữ liệu MATLAB được truyền và trả về. Tệp MEX (tệp thi hành MATLAB) là các tệp đối tượng có thể tải động được tạo bằng cách biên dịch các hàm như vậy. Kể từ năm 2014, việc tăng cường giao tiếp hai chiều với Python đã được thêm vào.

Các thư viện được viết bằng Perl, Java, ActiveX hoặc .NET có thể được gọi trực tiếp từ MATLAB, và nhiều thư viện MATLAB (ví dụ như hỗ trợ XML hoặc SQL) được thực thi như các trình bao bọc xung quanh các thư viện Java hoặc ActiveX. Gọi MATLAB từ Java phức tạp hơn, nhưng có thể được thực hiện với hộp công cụ MATLAB được MathWorks bán riêng hoặc sử dụng cơ chế không có giấy tờ gọi là JMI (Giao diện Java-to-MATLAB), ( không nên nhầm lẫn với Giao diện Siêu dữ liệu Java không liên quan cũng được gọi là JMI). API MATLAB chính thức cho Java đã được thêm vào năm 2016.

Là lựa chọn thay thế cho Hộp công cụ Mathic Math dựa trên MuPAD có sẵn từ MathWorks, MATLAB có thể được kết nối với Maple hoặc Mathematica.

Các thư viện cũng tồn tại để nhập và xuất MathML.

Giấy phép :

MATLAB là một sản phẩm độc quyền của MathWorks, vì vậy người dùng có thể bị khóa bởi nhà cung cấp. Mặc dù các sản phẩm MATLAB Builder có thể triển khai các hàm MATLAB như các tệp thư viện có thể được sử dụng với môi trường xây dựng ứng dụng .NET hoặc Java , nhưng việc phát triển trong tương lai vẫn sẽ được gắn với ngôn ngữ MATLAB.

Mỗi hộp công cụ được mua riêng. Nếu yêu cầu giấy phép đánh giá, bộ phận bán hàng của MathWorks yêu cầu thông tin chi tiết về dự án mà MATLAB sẽ được đánh giá. Nếu được cấp (thường là), giấy phép đánh giá có hiệu lực trong hai đến bốn tuần. Một phiên bản sinh viên của MATLAB có sẵn như là một giấy phép sử dụng tại nhà cho MATLAB, Simulink và một tập con của Hộp công cụ Mathwork với mức giá giảm đáng kể.

Các nhà quản lý cạnh tranh Liên minh châu Âu (EU) đang điều tra liệu MathWorks có từ chối bán giấy phép cho một đối thủ cạnh tranh hay không. Các nhà quản lý đã bỏ cuộc điều tra sau khi người khiếu nại rút lại cáo buộc của nó và không tìm thấy bằng chứng về việc làm sai trái.

Giải pháp thay thế :

MATLAB có một số đối thủ cạnh tranh. Các đối thủ cạnh tranh thương mại bao gồm Mathematica, TK Solver, Maple và IDL. Ngoài ra còn có các lựa chọn thay thế mã nguồn mở miễn phí cho MATLAB, đặc biệt là GNU Octave, Scilab, FreeMat và SageMath, được dự định chủ yếu tương thích với ngôn ngữ MATLAB; ngôn ngữ lập trình Julia ban đầu cũng sử dụng cú pháp giống như MATLAB. Trong số các ngôn ngữ khác coi mảng là thực thể cơ bản (ngôn ngữ lập trình mảng) là APL, Fortran 90 và cao hơn, S-Lang, cũng như ngôn ngữ thống kê R và S. Cũng có thư viện để thêm chức năng tương tự cho các ngôn ngữ hiện có, chẳng hạn như IT ++ cho C ++, Ngôn ngữ dữ liệu Perl cho Perl, ILNumerics cho .NET, NumPy / SciPy / matplotlib cho Python, SciLua / Torch cho Lua, SciRuby cho Ruby và Numeric.js cho JavaScript.

GNU Octave là duy nhất từ ​​các lựa chọn thay thế khác vì nó xử lý sự không tương thích với MATLAB như một lỗi (xem MATLAB tương thích của GNU Octave), do đó, làm cho GNU Octave trở thành một siêu của ngôn ngữ MATLAB.

VersionTên phát hànhSốBundled JVMYearNgày phát hànhGhi chú
MATLAB 1.01984
MATLAB 21986
MATLAB 31987
MATLAB 3.51990Chạy trên DOS nhưng cần ít nhất một bộ xử lý 386; phiên bản 3.5m cần Bộ đồng xử lí toán học
MATLAB 41992Chạy trên Macintosh
MATLAB 4.2c1994Chạy trên Windows 3.1x, cần một bộ đồng xử lý toán học
MATLAB 5.0Volume 81996December, 1996Phiên bản hợp nhất trên tất cả các nền tảng.
MATLAB 5.1Volume 91997May, 1997
MATLAB 5.1.1R9.1
MATLAB 5.2R101998March, 1998Phiên bản cuối cùng hoạt động trên các máy Mac cổ điển.
MATLAB 5.2.1R10.1
MATLAB 5.3R111999January, 1999
MATLAB 5.3.1R11.1November, 1999
MATLAB 6.0R12121.1.82000November, 2000Bản phát hành đầu tiên với máy ảo Java kèm theo (JVM)
MATLAB 6.1R12.11.3.02001June, 2001
MATLAB 6.5R13131.3.12002July, 2002
MATLAB 6.5.1R13SP12003
MATLAB 6.5.2R13SP2Bản phát hành cuối cùng cho IBM / AIX, Alpha / TRU64 và SGI / IRIX
MATLAB 7R14141.4.22004June, 2004Giới thiệu chức năng ẩn danh và lồng nhau

Giới thiệu lại cho Mac (trong Mac OS X)

MATLAB 7.0.1R14SP1October, 2004
MATLAB 7.0.4R14SP21.5.02005March 7, 2005Hỗ trợ cho các tập tin ánh xạ bộ nhớ
MATLAB 7.1R14SP31.5.0September 1, 2005
MATLAB 7.2R2006a151.5.02006March 1, 2006
MATLAB 7.3R2006b161.5.0September 1, 2006Hỗ trợ MAT-file HDF5
MATLAB 7.4R2007a171.5.0_072007March 1, 2007Hàm bsxfun mới để áp dụng phép toán nhị phân từng phần tử với phép mở rộng singleton
MATLAB 7.5R2007b181.6.0September 1, 2007Lần phát hành cuối cùng cho Windows 2000 và PowerPC Mac; License Server hỗ trợ cho Windows Vista, định dạng nội bộ mới cho P-code
MATLAB 7.6R2008a191.6.02008March 1, 2008Các cải tiến chính đối với khả năng lập trình hướng đối tượng với cú pháp định nghĩa lớp mới, và khả năng quản lý không gian tên với các gói.
MATLAB 7.7R2008b201.6.0_04October 9, 2008Cấu trúc dữ liệu bản đồ mới: nâng cấp lên các trình tạo số ngẫu nhiên
MATLAB 7.8R2009a211.6.0_042009March 6, 2009Bản phát hành đầu tiên cho Microsoft Windows 7-bit & 64-bit 7, giao diện bên ngoài mới cho .NET Framework
MATLAB 7.9R2009b221.6.0_12September 4, 2009Bản phát hành đầu tiên cho Intel 64-bit Mac, và cuối cùng cho Solaris SPARC; sử dụng mới cho toán tử dấu ngã (~) để bỏ qua các đối số trong các gọi hàm.
MATLAB 7.9.1R2009bSP11.6.0_122010April 1, 2010Sửa lỗi
MATLAB 7.10R2010a231.6.0_12March 5, 2010Lần phát hành cuối cùng cho Intel 32-bit Mac
MATLAB 7.11R2010b241.6.0_17September 3, 2010Thêm hỗ trợ cho phép liệt kê
MATLAB 7.11.1R2010bSP11.6.0_172011March 17, 2011Sửa lỗi và cập nhật
MATLAB 7.11.2R2010bSP21.6.0_17April 5, 2012Sửa lỗi
MATLAB 7.12R2011a251.6.0_17April 8, 2011Chức năng rng mới để điều khiển tạo số ngẫu nhiên.
MATLAB 7.13R2011b261.6.0_17September 1, 2011Truy cập thay đổi các phần của biến trực tiếp trong các tệp MAT, mà không tải vào bộ nhớ, tăng môi trường làm việc địa phương tối đa với hộp công cụ tính toán song song từ 8 đến 12.
MATLAB 7.14R2012a271.6.0_172012March 1, 2012Phiên bản cuối cùng với hỗ trợ Linux 32 bit.
MATLAB 8R2012b281.6.0_17September 11, 2012Bản phát hành đầu tiên với giao diện Toolstrip,  MATLAB Apps. Hệ thống tài liệu được thiết kế lại.
MATLAB 8.1R2013a291.6.0_172013March 7, 2013Khung kiểm tra đơn vị mới
MATLAB 8.2R2013b301.7.0_11September 6, 2013Kiểu dữ liệu bảng mới
MATLAB 8.3R2014a311.7.0_112014March 7, 2014Thiết lập trình biên dịch đơn giản hóa để xây dựng các tệp MEX; USB Webcam hỗ trợ trong lõi MATLAB; số lượng miền làm việc địa phương không còn giới hạn ở 12 với Hộp công cụ tính toán song song
MATLAB 8.4R2014b321.7.0_11October 3, 2014Công cụ đồ họa dựa trên lớp mới (còn gọi là HG2), chức năng tabbing trong GUI, cải tiến bao bì hộp công cụ người dùng và các tập tin trợ giúp; các đối tượng mới cho các thao tác thời gian; Tích hợp Git-Subversion trong IDE các khả năng dữ liệu lớn với MapReduce (có thể mở rộng thành Hadoopp) gói py mới để sử dụng Python từ bên trong MATLAB, giao diện động cơ mới để gọi MATLAB từ Python; (Các dịch vụ web RESTful với hỗ trợ JSON / XML), tcpclient (các kết nối dựa trên socket), các biểu đồ lịch sử, biểu đồ, đường hoạt hình và các loại khác
MATLAB 8.5R2015a331.7.0_602015March 5, 2015Phiên bản cuối cùng hỗ trợ Windows XP và Windows Vista
MATLAB 8.5R2015aSP11.7.0_60October 14, 2015
MATLAB 8.6R2015b341.7.0_60September 3, 2015Công cụ thực thi MATLAB mới (a.k.a. LXE), đồ thị và các lớp đồ họa để làm việc với các đồ thị và mạng; MinGW-w64 là trình biên dịch được hỗ trợ trên Windows; Phiên bản cuối cùng với hỗ trợ 32 bit.

 

MATLAB 9.0R2016a351.7.0_602016March 3, 2016Tập lệnh trực tiếp: các tài liệu tương tác kết hợp văn bản, mã và đầu ra (theo kiểu lập trình Literate); App Designer: một môi trường phát triển mới để xây dựng các ứng dụng (với các kiểu giao diện người dùng, trục và thành phần mới); tạm dừng thực hiện các chương trình đang chạy bằng nút Tạm dừng
MATLAB 9.1R2016b361.7.0_60September 15, 2016Xác định các hàm cục bộ trong các nghuên bản, mở rộng tự động các tham số (trước đây được cung cấp thông qua lệnh gọi rõ ràng tới bsxfun); các mảng cao cho dữ liệu lớn, kiểu chuỗi mới, các hàm mới để mã hóa / giải mã JSON; API chính thức của MATLAB Engine cho Java.
MATLAB 9.2R2017a371.7.0_602017March 9, 2017MATLAB Online: máy tính để bàn MATLAB dựa trên đám mây được truy cập trong trình duyệt web, các chuỗi được trích dẫn kép; chức năng ghi nhớ mới cho bản ghi nhớ; mở rộng khuôn khổ xác thực các thuộc tính đối tượng, mocking khuôn khổ cho thử nghiệm đơn vị; MEX nhắm mục tiêu 64-bit theo mặc định; chức năng bản đồ nhiệt mới để tạo biểu đồ nhiệt.
MATLAB 9.3R2017b381.8.0_121September 21, 2017
MATLAB 9.4R2018a1.8.0_1442018March 15, 2018

 

BÀI VIẾT LIÊN QUAN

Trả lời

Email của bạn sẽ không được hiển thị công khai.