Biến đơn giản và kiểu dữ liệu cơ bản trong MatLab. Lập trình chức năng M

Giống như tất cả các ngôn ngữ lập trình, MatLab cung cấp khả năng làm việc với các biến. Hơn nữa, người dùng không phải lo lắng về giá trị mà biến sẽ nhận (phức, thực hay chỉ số nguyên). Ví dụ, để gán giá trị 1,45 cho biến z, chỉ cần viết z = 1,45 vào dòng lệnh và MatLab sẽ in ngay giá trị của z:

» z = 1,45
z =
1.4500

Ở đây dấu bằng được dùng làm toán tử gán. Thường không thuận tiện lắm để nhận được kết quả sau mỗi bài tập. Do đó, MatLab cung cấp khả năng kết thúc câu lệnh gán bằng dấu chấm phẩy để chặn kết quả xuất ra cửa sổ lệnh. Tên biến có thể là bất kỳ chuỗi chữ cái và số nào, không có khoảng trắng, bắt đầu bằng một chữ cái. Chữ thường và chữ in hoa là khác nhau, ví dụ MZ và mz là hai biến khác nhau. Số ký tự mà MatLab hiểu được trong một tên biến là 31.
Để luyện tập cách sử dụng biến, hãy tìm giá trị của biểu thức sau:

Nhập chuỗi lệnh bên dưới (chú ý dấu chấm phẩy trong hai câu lệnh gán đầu tiên để ngăn chặn đầu ra giá trị trung gianđể sàng lọc):

"x = sin(1.3*pi)/log(3.4);
» y = sqrt(tan(2.75)/tanh(2.75));
» z= (x+y)/(x-y)
Z =
0,0243 - 0,9997i

Câu lệnh gán cuối cùng không được kết thúc bằng dấu chấm phẩy để lấy ngay giá trị của biểu thức ban đầu. Tất nhiên, bạn có thể nhập toàn bộ công thức cùng một lúc và nhận được kết quả tương tự:

"(sin(1.3*pi)/log(3.4)+sqrt(tan(2.75)/tanh(2.75)))/…
(sin(1.3*pi)/log(3.4)-sqrt(tan(2.75)/tanh(2.75))) ans =
0,0243 - 0,9997i

Hãy chú ý mục nhập đầu tiên gọn gàng và rõ ràng hơn nhiều so với mục nhập thứ hai! Trong tùy chọn thứ hai, công thức không vừa với cửa sổ lệnh trên một dòng và tôi phải viết nó thành hai dòng, trong đó ba dấu chấm được đặt ở cuối dòng đầu tiên.

Để nhập công thức hoặc lệnh dài vào dòng lệnh, hãy đặt ba dấu chấm (liên tiếp, không có dấu cách), nhấn phím và tiếp tục gõ công thức vào hàng tiếp theo. Bằng cách này bạn có thể đặt biểu thức trên nhiều dòng. MatLab sẽ đánh giá toàn bộ biểu thức hoặc thực hiện lệnh sau khi click vào ở dòng cuối cùng (không có ba dấu chấm liên tiếp).

MatLab ghi nhớ giá trị của tất cả các biến được xác định trong một phiên. Nếu sau khi nhập ví dụ trên, một số phép tính nữa được thực hiện và cần phải hiển thị giá trị X, sau đó bạn chỉ cần gõ X trên dòng lệnh và nhấn :

" x
-0.6611

Các biến được xác định ở trên có thể được sử dụng trong các công thức khác. Ví dụ: nếu bây giờ bạn cần đánh giá biểu thức

,

sau đó chỉ cần nhập lệnh sau:

» (x-y)^(3/2)
trả lời =
-0,8139 + 0,3547i

Các hàm gọi trong MatLab khá linh hoạt. Ví dụ: bạn có thể tính e3.5 bằng cách gọi hàm exp từ dòng lệnh:

» điểm kinh nghiệm(3.5)
trả lời =
33.1155

Một cách khác là sử dụng toán tử gán:

»t = exp(3.5)
t =
33.1155

Giả sử rằng một số phép tính với các biến đã được hoàn thành và phần còn lại sẽ phải được hoàn thành trong phiên làm việc với MatLab tiếp theo. Trong trường hợp này, bạn sẽ cần lưu các biến được xác định trong môi trường sản xuất.

Xem biến

Khi làm việc với đủ một lượng lớn các biến, bạn cần biết biến nào đã được sử dụng và biến nào chưa. Với mục đích này, hãy sử dụng lệnh who, lệnh này sẽ hiển thị danh sách các biến được sử dụng trong cửa sổ lệnh MatLab:

"Ai"
Các biến của bạn là:
a2 a3

Lệnh whos cho phép bạn nhận được nhiều hơn thông tin chi tiết về các biến ở dạng bảng:

Tổng cộng là 3 phần tử sử dụng 24 byte

Cột Tên đầu tiên bao gồm tên của các biến được sử dụng. Nội dung trong cột Kích thước về cơ bản được xác định bởi cách MatLab hoạt động. chương trình MatLab Tất cả dữ liệu được trình bày dưới dạng mảng. Các biến al, a2 và a3 là mảng hai chiều một đến một kích thước. Mỗi biến chiếm 8 byte, như được chỉ ra trong cột Byte. Cuối cùng, trong cột cuối cùng Lớp loại biến được chỉ định - mảng kép, tức là. một mảng các số có độ chính xác gấp đôi. Dòng bên dưới bảng cho biết tổng cộng có ba yếu tố, tức là các biến chiếm 24 byte. Hóa ra việc biểu diễn tất cả dữ liệu trong MatLab dưới dạng mảng có những ưu điểm nhất định.
Để xóa tất cả các biến khỏi bộ nhớ, hãy sử dụng lệnh clear. Nếu bạn chỉ định danh sách các biến (được phân tách bằng dấu cách) trong các đối số thì chỉ chúng mới được giải phóng khỏi bộ nhớ, ví dụ:

» rõ ràng al az
"Ai
Các biến của bạn là:
a2

Bắt đầu từ phiên bản 6.0, nó đã xuất hiện công cụ tiện lợiđể xem các biến môi trường làm việc- cửa sổ Không gian làm việc, để đi đến đó bạn nên kích hoạt dấu trang cùng tên. Cửa sổ này chứa một bảng tương tự như bảng được hiển thị bởi lệnh whos. Nhấn đúp chuột trên dòng tương ứng với mỗi biến làm cho nội dung của nó được hiển thị trong cửa sổ riêng biệt, điều này đặc biệt hữu ích khi làm việc với mảng. Thanh công cụ cửa sổ Không gian làm việc cho phép bạn loại bỏ các biến không cần thiết, lưu và mở môi trường làm việc.

Cho đến nay chúng tôi đã gặp bốn nhiều loại khác nhau dữ liệu
chương trình MATLAB: số dấu phẩy động, chuỗi, ký tự
biểu thức và chức năng.

Trong một phiên chương trình MATLAB dài, có thể không dễ nhớ tên và loại của tất cả các biến mà bạn đã xác định.
Bạn có thể nhập lệnh ai xem danh sách chung tên và
loại hoặc lớp do bạn chỉ định trên khoảnh khắc này biến. Nhưng trước đó
cách thực hiện việc này, thực hiện các phép gán a = pi, b = "pi", c = ("pi"), sau đó
đi vào ai. Dưới đây là đầu ra của kết quả phiên MATLAB,
được trình bày trong chương này.

Các biến A, X, Y, Z, a và d được gán giá trị số và
được chỉ định là "mảng kép". Điều này có nghĩa chúng là các mảng số có
độ chính xác gấp đôi; V. trong trường hợp này mảng a và d có kích thước 1x1, nghĩa là
là vô hướng. Cột Byte hiển thị số lượng máy tính
Mỗi biến chiếm bộ nhớ. Biến ans cũng là số,
vì đầu ra cuối cùng là vectơ 1X2. Biến b là một chuỗi,
được chỉ định là mảng char (Mảng ký tự), vì các biến là c, u, v, w,
x, y mang tính biểu tượng. Cuối cùng, chúng ta cũng thấy hai mảng xử lý
các hàm và hai mảng các đối tượng tích hợp tương ứng với các cặp
chức năng ẩn danh và chức năng tích hợp.
Lệnh whos hiển thị thông tin về tất cả các biến được chỉ định, nhưng lệnh này
lệnh không hiển thị giá trị của các biến. Để xem giá trị của một biến,
Chỉ cần nhập tên của biến và nhấn phím Fnterl.

Các lệnh chương trình MATLAB yêu cầu các lớp cụ thể khi nhập
dữ liệu và điều rất quan trọng là phải biết loại dữ liệu nào mà một lệnh nhất định yêu cầu;
văn bản trợ giúp lệnh thường chứa lớp hoặc các lớp
được yêu cầu khi nhập cảnh. Lớp đầu vào không hợp lệ thường dẫn đến
thông báo lỗi hoặc kết quả không mong muốn. Ví dụ: nhập lệnh sin("pi") để xem kết quả của việc thêm một dòng vào
một hàm không chấp nhận chuỗi.
Để xóa tất cả được chỉ định biến Matlab, nhập xóa hoặc xóa tất cả.
Bạn cũng có thể nhập, ví dụ, xóa x y để chỉ xóa
biến x và y.

Phúc. 2.2. Máy tính để bàn có cửa sổ Workspace ( Không gian làm việc)

Thông thường bạn nên xóa các biến trước khi bắt đầu tính toán mới.
Nếu không, các giá trị từ các phép tính trước đó có thể vô tình
bước vào những cái mới. Cửa sổ Workspace cung cấp
một sự thay thế đồ họa cho lệnh whos. Bạn có thể kích hoạt cửa sổ này bằng cách nhấp vào
bằng cách nhấp vào tab Workspace trong cửa sổ Current Directory hoặc bằng cách nhập lệnh không gian làm việc tại dòng lệnh. Trong bộ lễ phục. 2.2 hiển thị
Máy tính để bàn chứa Cửa sổ lệnh và Không gian làm việc
(không gian làm việc) chứa cùng thông tin được hiển thị
cao hơn.

Vì vậy, từ tất cả những gì đã nói ở trên, chúng tôi có thể kết luận rằng bạn cần phải xem xét rất nhiều thông tin thêm và các lựa chọn thay thế!

3.3. Thực hiện chức năng M. Danh sách đối số. Các loại lập luận. Loại dữ liệu

Hàm M có thể được gọi từ dòng lệnh của hệ thống MATLAB hoặc từ các tệp M khác, đảm bảo chỉ định tất cả các thuộc tính cần thiết - các đối số đầu vào trong dấu ngoặc đơn, ghi các đối số trong dấu ngoặc vuông.

Việc chỉ định một cái tên. Khi một tên mới xuất hiện, MATLAB sẽ kiểm tra:

  1. Tên mới có phải là tên biến không?
  2. Tên này có phải là tên của một hàm con, tức là một hàm nằm trong cùng một tệp M và được gọi không?
  3. Đó không phải là một cái tên sao? chức năng riêng tư, được đặt trong thư mục riêng. Thư mục này chỉ có thể truy cập được đối với các tệp M nằm ở cấp cao hơn.
  4. Đây có phải là tên của một hàm trong đường dẫn hệ thống MATLAB. Trong trường hợp này, hệ thống sử dụng tệp M xuất hiện đầu tiên trong đường dẫn truy cập.

Trong trường hợp tên trùng lặp, MATLAB sử dụng tên theo hệ thống phân cấp 4 cấp độ trên. Cần lưu ý rằng trong MATLAB 5 có thể định nghĩa lại hàm theo các quy tắc lập trình hướng đối tượng.

Gọi một hàm. Tại gọi hàm M, hệ thống MATLAB sẽ dịch hàm này thành mã giả và tải nó vào bộ nhớ. Điều này tránh phân tích lại. Mã giả vẫn còn trong bộ nhớ cho đến khi lệnh xóa được sử dụng hoặc phiên kết thúc.

Các sửa đổi sau đây đối với lệnh xóa là hợp lệ:

Lệnh này làm phân tích cú pháp M tập tin Average.m và lưu mã giả kết quả vào một tập tin có tên là Average.p. Điều này tránh việc phân tích cú pháp lặp đi lặp lại trong một phiên mới. Vì quá trình phân tích cú pháp diễn ra rất nhanh nên việc sử dụng lệnh pcode ít ảnh hưởng đến tốc độ thực thi.
Việc sử dụng mã P được khuyến khích trong hai trường hợp:

  • khi bạn cần phân tích cú pháp số lượng lớn Cần có tệp M để hiển thị đối tượng đồ họa trong các ứng dụng liên quan đến phát triển GUI người dùng; trong trường hợp này, việc sử dụng mã P mang lại khả năng tăng tốc đáng kể;
  • khi người dùng muốn ẩn các thuật toán được triển khai trong tệp M.

Quy tắc truyền đối số. Theo quan điểm của người lập trình, hệ thống MATLAB chuyển một đối số theo giá trị của nó. Trên thực tế, chỉ những đối số thay đổi trong quá trình hoạt động của hàm này mới được truyền dưới dạng giá trị. Nếu một hàm không thay đổi giá trị của đối số mà chỉ sử dụng nó để tính toán thì đối số sẽ được truyền theo tham chiếu, điều này cho phép tối ưu hóa việc sử dụng bộ nhớ.

Không gian làm việc chức năng. Mỗi hàm M được phân bổ một vùng bộ nhớ bổ sung không trùng với không gian làm việc của hệ thống MATLAB. Vùng này được gọi là vùng làm việc của hàm. Mỗi chức năng có không gian làm việc riêng.

Khi làm việc với MATLAB, bạn chỉ có thể truy cập các biến nằm trong không gian làm việc của hệ thống hoặc trong không gian làm việc của hàm. Nếu một biến được khai báo là toàn cục thì nó có thể được coi là thuộc về một số không gian làm việc.

Kiểm tra số lượng đối số. Hàm nargin và nargout cho phép bạn xác định số lượng đối số đầu vào và đầu ra của hàm được gọi. Thông tin này sau đó có thể được sử dụng trong các câu lệnh điều kiện để thay đổi tiến trình tính toán.

Ví dụ:

hàm c = testarg1(a,b)
if(nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = + b;
kết thúc

Khi được cung cấp một đối số đầu vào duy nhất, hàm sẽ tính bình phương của biến đầu vào; khi hai đối số được đưa ra, một phép cộng được thực hiện.

Hãy xem xét thêm ví dụ phức tạp- lựa chọn một phần chuỗi ký tựđến dấu phân cách, có thể là dấu cách hoặc bất kỳ ký tự nào khác. Khi được cung cấp một đối số đầu vào duy nhất, hàm phải chọn phần của chuỗi trước dấu phân cách, theo mặc định là khoảng trắng; và tất cả các khoảng trắng ở đầu dòng sẽ bị xóa. Khi chỉ định hai đối số, đối số thứ hai phải là ký tự phân cách.

Hàm này được đóng gói dưới dạng M-function strtok, nằm trong thư mục strfun.

Hàm phải có ít nhất một đối số đầu vào

Nếu chỉ có một đối số đầu vào thì dấu cách sẽ được sử dụng làm dấu phân cách.

Xác định phần đầu của chuỗi con đã chọn

Xác định phần cuối của chuỗi con đã chọn

Làm nổi bật phần còn lại của dòng

Lưu ý rằng thứ tự của các đối số trong danh sách đầu ra là quan trọng. Khi gọi hàm M, nếu không có đối số đầu ra nào được chỉ định thì đối số đầu tiên sẽ là đầu ra theo mặc định. Để tạo và xuất các đối số tiếp theo, cần tổ chức lệnh gọi hàm M thích hợp.

Danh sách đối số.

Các hàm varargin và varargout cho phép bạn truyền số lượng đối số đầu vào và đầu ra tùy ý. Hệ thống MATLAB gói tất cả các đối số đầu vào và đầu ra được chỉ định vào một mảng ô. Mỗi ô có thể chứa bất kỳ loại và số lượng dữ liệu nào.

Ví dụ
Hàm testvar chấp nhận bất kỳ số lượng vectơ hai phần tử nào làm đối số đầu vào và hiển thị các đường nối chúng.

hàm testvar(varargin)

với i = 1:length(varargin)
x(i) = varargin(i)(1);
y(i) = varargin(i)(2);
kết thúc

xmin = min(0, min(x));
ymin = min(0, min(y));
trục()
cốt truyện(x,y)

Do đó, hàm testvar có thể hoạt động với danh sách đầu vào có độ dài khác nhau.

Ví dụ:

testvar(, , , , , )
testvar([-1 0], , , )

Hình thành mảng đầu vào varargin. Bởi vì danh sách varargin lưu trữ đối số đầu vào trong một mảng ô thì bạn cần sử dụng các chỉ mục ô để lấy dữ liệu. Một chỉ mục ô có hai thành phần:
- chỉ số trong dấu ngoặc nhọn;
- chỉ số trong ngoặc đơn.

Ví dụ:

y(i)= varargin(i)(2);
Ở đây, chỉ mục trong dấu ngoặc nhọn (i) cho biết địa chỉ của ô thứ i của mảng varargin và chỉ mục trong dấu ngoặc đơn (2) cho biết phần tử thứ hai trong ô.

Hình thành mảng đầu ra varargout. Nếu có số lượng đối số đầu ra tùy ý, chúng phải được đóng gói vào một mảng ô varargout. Để xác định số lượng đối số đầu ra của một hàm, bạn cần sử dụng hàm nargout.

Ví dụ
Chức năng tiếp theo sử dụng mảng hai cột làm đầu vào, trong đó cột đầu tiên là tập hợp các giá trị tọa độ x và cột thứ hai là tập hợp các giá trị tọa độ y. Hàm chia mảng thành các vectơ riêng lẻ, có thể được chuyển đến hàm testvar làm đầu vào.

hàm = testvar2(arrayin)
vì i = 1:nargout
varargout(i) = arrayin(i, :);
kết thúc

Toán tử gán trong vòng lặp for sử dụng cú pháp gán mảng ô. Phía bên trái của toán tử gán sử dụng dấu ngoặc nhọn để biểu thị rằng dữ liệu chuỗi mảng đang được gán cho ô.

Các câu lệnh sau có thể được sử dụng để gọi hàm testvar2:

một = ";
= testvar2(a)

p1 = 16
p2 = 2 7
p3 = 3 8
p4 = 4 9
p5 = 5 0

Sử dụng mảng ô trong danh sách đối số. Các đối số varargin và varargout phải là đối số cuối cùng trong danh sách đối số tương ứng của chúng. Khi gọi đối số hàm, varargout trước đó phải được đánh giá bên trong hàm.

Ví dụ
Các tiêu đề chức năng bên dưới hiển thị sử dụng đúng liệt kê varargin và varargout:

hàm = example1(a,b,varargin)
hàm = example2(x1,y1,x2,y2,flag)

Các loại biến.

Biến cục bộ và toàn cục. Việc sử dụng các biến trong M-file không khác gì việc sử dụng các biến trên dòng lệnh, cụ thể là:

  • các biến không yêu cầu khai báo; Trước khi gán giá trị cho một biến, bạn phải đảm bảo rằng tất cả các biến ở vế phải đều đã được gán giá trị;
  • bất kỳ thao tác gán nào cũng tạo ra một biến nếu cần thiết hoặc thay đổi giá trị của biến hiện có;
  • tên biến bắt đầu bằng một chữ cái, theo sau là bất kỳ số chữ cái, số và dấu gạch dưới nào; Hệ thống MATLAB phân biệt giữa các ký hiệu trên và dưới. chữ thường;
  • Tên biến không được vượt quá 31 ký tự. Chính xác hơn, tên có thể dài hơn nhưng MATLAB chỉ tính đến 31 ký tự đầu tiên.

Thông thường, mỗi hàm M được chỉ định dưới dạng tệp M có các biến cục bộ riêng, khác biệt với các biến của các hàm và biến không gian làm việc khác. Tuy nhiên, nếu một số hàm và không gian làm việc khai báo một biến toàn cục thì tất cả chúng đều có chung một bản sao của biến đó. Bất kỳ phép gán nào cho biến này đều áp dụng cho tất cả các hàm mà nó được khai báo toàn cục.

Ví dụ.
Giả sử chúng ta muốn nghiên cứu ảnh hưởng của các hệ số a và b đối với mô hình động vật ăn thịt-con mồi được mô tả bằng phương trình Lotke-Volterra:

Hãy tạo một tệp M lotka.m:

hàm yp = lotka(t, y)
%LOTKA của phương trình Lotke-Volterra cho mô hình động vật ăn thịt-con mồi

BETA ALPHA toàn cầu
yp = ;

Sau đó, thông qua dòng lệnh, nhập toán tử:

BETA ALPHA toàn cầu
ALPHA = 0,01;
BETA = 0,02;
= ode23("lotka2",,);
cốt truyện(t,y)

Lệnh chung khai báo các biến ALPHA và BETA toàn cục và do đó có sẵn trong hàm lotka.m. Do đó, chúng có thể được thay đổi từ dòng lệnh và sẽ thu được các giải pháp mới mà không cần chỉnh sửa tệp M lotka.m.

Để làm việc với các biến toàn cục bạn cần:

  • khai báo biến là toàn cục trong mọi hàm M cần biến này. Để một biến không gian làm việc có tính toàn cục, bạn phải khai báo nó là toàn cục từ dòng lệnh;
  • trong mỗi hàm, hãy sử dụng lệnh chung trước khi biến xuất hiện lần đầu tiên; Nên chỉ định lệnh chung ở đầu tệp M.

Tên biến toàn cục thường dài hơn và có ý nghĩa hơn tên biến cục bộ và thường sử dụng chữ in hoa. Đây là tùy chọn nhưng được khuyến nghị để đảm bảo mã MATLAB dễ đọc và giảm nguy cơ vô tình ghi đè một biến toàn cục.

Các biến đặc biệt Một số hàm M trả về các biến đặc biệt chơi vai trò quan trọng khi làm việc trong môi trường hệ thống MATLAB:

đáp Kết quả mới nhất; nếu biến đầu ra không được chỉ định thì MATLAB sẽ sử dụng biến ans.
eps Độ chính xác của dấu phẩy động; được xác định bởi độ dài của lớp phủ và đối với PC eps = 2.220446049250313e-016
realmax Số lớn nhất dấu phẩy động, biểu diễn bằng máy tính; cho PC realmax = 1.797693134862316e+308.
realmin Số dấu phẩy động nhỏ nhất có thể được biểu diễn bằng máy tính; đối với PC realmin = 2.225073858507202e-308.
số Pi Biến đặc biệt cho số p: pi=3.141592653589793e+000.
tôi, j Các biến đặc biệt để biểu diễn đơn vị ảo
thông tin Biến đặc biệt để biểu thị ký hiệu vô cực?
NaN Biến đặc biệt để chỉ định không xác định- kết quả của các phép toán kiểu: 0/0, inf/inf.
máy tính Một biến đặc biệt để chỉ ra loại máy tính đang được sử dụng; dành cho PC - PCWIN.
thất bại Một biến đặc biệt để chỉ ra số lượng phép toán dấu phẩy động.
phiên bản Một biến đặc biệt để lưu trữ số phiên bản hệ thống MATLAB đã sử dụng.

Các hàm M tương ứng tạo ra các biến đặc biệt này được đặt trong thư mục elmat và được hỗ trợ bởi trợ giúp trực tuyến.

Loại dữ liệu.

Có sáu định nghĩa trong MATLAB các loại cơ bản dữ liệu, mỗi dữ liệu là một mảng nhiều chiều. Sáu lớp là double, char, thưa thớt, uint8, cell và struct. Phiên bản hai chiều của các mảng này được gọi là ma trận, đó là lý do MATLAB lấy tên là MATRIX LAB.

Sơ đồ thành viên của một đối tượng cụ thể của hệ thống MATLAB đối với một trong các lớp có dạng sau (Hình 3.1):

Có khả năng là hầu hết thời gian bạn sẽ chỉ phải xử lý hai trong số các kiểu dữ liệu này: một mảng dữ liệu kép và một mảng ký tự (char) hoặc chỉ một chuỗi. Điều này là do tất cả các phép tính trong MATLAB đều được thực hiện với độ chính xác kép và hầu hết các hàm hoạt động trên các mảng hoặc chuỗi có độ chính xác kép.

Khác Loại dữ liệuđược dành cho những mục đích như vậy ứng dụng đặc biệt, chẳng hạn như làm việc với ma trận thưa thớt (thưa thớt), xử lý ảnh (uint8), làm việc với mảng nhiều chiều (ô và cấu trúc).

Bạn không thể đặt loại biến thành số hoặc mảng. Những loại này được gọi là ảo và chỉ phục vụ cho các biến nhóm có thuộc tính chung.

Loại uint8 được thiết kế để lưu trữ dữ liệu hiệu quả trong bộ nhớ. Loại dữ liệu này chỉ có thể được áp dụng hoạt động cơ bản lập chỉ mục và thay đổi kích thước, nhưng không thể thực hiện được phép toán nào. Để làm được điều này, các mảng như vậy phải được chuyển đổi thành kiểu double.

Tạo các kiểu của riêng bạn và thêm các phương thức cho các kiểu có sẵn. Bảng bên dưới chứa kiểu dữ liệu thứ bảy - UserObject. ngôn ngữ MATLAB cho phép bạn tạo các kiểu dữ liệu của riêng mình và làm việc với chúng theo cách tương tự như các kiểu có sẵn.

Đối với các kiểu dữ liệu có sẵn, bạn có thể ghi đè một phương thức giống như cách bạn thực hiện đối với một đối tượng. Ví dụ: để thiết lập thao tác sắp xếp cho một mảng loại uint8, bạn cần tạo một phương thức (sort.m hoặc Sort.mex) và đặt nó vào một thư mục đặc biệt @uint8.

Bảng sau mô tả các loại dữ liệu chi tiết hơn.

Lớp học Ví dụ Sự miêu tả
Gấp đôi [ 1 2; 3 4]
5+6i
Mảng số độ chính xác kép (đây là loại biến phổ biến nhất trong MATLAB
Char "Xin chào" Mảng ký tự(mỗi ký tự dài 16 bit), thường gọi là chuỗi.
thưa thớt Speye(5) Ma trận thưa thớtđộ chính xác kép (chỉ hai chiều). Cấu trúc thưa thớt được sử dụng để lưu trữ ma trận với một số lượng nhỏ các phần tử khác 0, cho phép chỉ sử dụng một phần nhỏ bộ nhớ cần thiết để lưu trữ toàn bộ ma trận. Ma trận thưa thớt yêu cầu ứng dụng phương pháp đặc biệtđể giải quyết vấn đề.
Tế bào (17 con mắt "chào" (2)) Mảng ô. Các phần tử của mảng này chứa các mảng khác. Mảng ô cho phép bạn kết hợp dữ liệu liên quan, có thể Đa dạng về kích cỡ, thành một cấu trúc duy nhất.
Cấu trúc A.ngày = 12; A.color = "Đỏ"; A.mat = ma thuật(3); Mảng hồ sơ. Nó bao gồm tên trường. Bản thân các trường có thể chứa mảng. Giống như mảng ô, mảng bản ghi kết hợp dữ liệu và thông tin liên quan về nó.
Uint8 Uint8(ma thuật(3)) Mảng số nguyên không dấu 8 bit. Nó cho phép bạn lưu trữ các số nguyên trong phạm vi từ 0 đến 255 trong 1/8 bộ nhớ cần thiết cho một mảng có độ chính xác kép. Không có Các hoạt động toán học không được xác định cho các mảng này.
Đối tượng người dùng nội tuyến("sin(x)") Kiểu dữ liệu do người dùng xác định.

Mô tả sơ đồ. Các đường kết nối trong sơ đồ (Hình 3.1) xác định xem một kiểu dữ liệu cụ thể có thuộc về một hoặc nhiều lớp hay không.

Ví dụ
Một ma trận kiểu thưa cũng có kiểu double và kiểu số. Toán tử
isa(S",thưa thớt")
isa(S",gấp đôi")
isa(S",số")

trả về giá trị 1 (true), tức là S là ma trận số thưa thớt có độ chính xác kép.

Lưu ý rằng loại mảng nằm ở đầu sơ đồ. Điều này có nghĩa là tất cả dữ liệu của hệ thống MATLAB đều là mảng.

Mỗi loại dữ liệu có thể được liên kết với các hàm và toán tử xử lý riêng của nó, hay nói cách khác là các phương thức. Các kiểu dữ liệu con, nằm bên dưới kiểu dữ liệu gốc trong sơ đồ, cũng được hỗ trợ bởi các phương thức của dữ liệu gốc. Do đó, một mảng kiểu double được hỗ trợ bởi các phương thức được sử dụng cho kiểu số.

Bảng này hiển thị một số phương pháp sau:

Lớp học Phương pháp
Mảng Tính toán kích thước, độ dài, ndims, liên kết mảng (), chuyển vị, chỉ số phụ, định hình lại và hoán vị các kích thước của mảng nhiều chiều.
Ô mảng ô Lập chỉ mục bằng cách sử dụng dấu ngoặc nhọn(e1,…,en) và phân cách các phần tử trong danh sách bằng dấu phẩy.
Chuỗi ký tự Hàm chuỗi(strcmp, thấp hơn), chuyển đổi tự độngĐẾN gõ đôi sử dụng các phương thức của lớp kép.
Gấp đôi Các phép toán số học và logic, hàm toán học, hàm của ma trận.
số Tìm kiếm (find), xử lý số phức (thực, ảo), hình thành vectơ, chọn hàng, cột, khối con mảng, khai triển vô hướng.
thưa thớt Các phép toán trên ma trận thưa.
Mảng bản ghi cấu trúc Truy cập vào nội dung của field.field (dấu phân cách phần tử danh sách là dấu phẩy).
Uint8 Hoạt động lưu trữ (thường được sử dụng nhất với Hộp công cụ xử lý ảnh PPP)
Đối tượng người dùng Đã xác định người dùng

Mảng trống. Phiên bản đầu Các hệ thống MATLAB cho phép một dạng duy nhất của một mảng trống có kích thước 0x0, ký hiệu là . MATLAB 5 hỗ trợ các mảng có một, nhưng không phải tất cả, kích thước bằng 0, nghĩa là các mảng có kích thước 1x0, 10x0x20 hoặc được xác định là trống.

Dấu ngoặc vuông tiếp tục biểu thị mảng 0x0. Các mảng trống có kích thước khác có thể được tạo bằng cách sử dụng các hàm số 0, số 1, rand hoặc mắt. Ví dụ: để tạo một mảng trống có kích thước 0x5, bạn có thể sử dụng toán tử gán
E = số không (0,5).

Mục đích chính của mảng trống là để bất kỳ thao tác nào được xác định trên một mảng (ma trận) có kích thước m?n sẽ xác định kết quả chính xác cho trường hợp khi m hoặc n bằng 0. Kích thước của mảng kết quả (ma trận) phải khớp giá trị hàm, tính bằng không.

Ví dụ, người vận hành
C=
yêu cầu mảng A và B có cùng số hàng. Do đó, nếu mảng A có kích thước m x ​​n và B có kích thước m x ​​p thì C là mảng có kích thước m x ​​(n+p). Kết quả sẽ đúng nếu bất kỳ tham số m, n hoặc p nào bằng 0.

Nhiều phép toán trong MATLAB tạo ra một vectơ hàng hoặc vectơ cột. Trong trường hợp này, kết quả có thể là một vectơ hàng trống
r = số không(1, 0),
hoặc một vectơ cột trống
C = số không(0, 1).

MATLAB 5 hỗ trợ các quy tắc hệ thống MATLAB 4 cho câu lệnh if và while. Ví dụ, điều hành có điều kiện kiểu
nếu A, S1, ngược lại, S0, kết thúc
thực thi câu lệnh S0 khi A là một mảng trống.

Một số hàm MATLAB như sum, prod, min và max làm giảm tính chiều của kết quả: nếu đối số là một mảng thì kết quả là một vectơ; nếu đối số là vectơ thì kết quả là vô hướng.

Đối với các hàm này, khi mảng đầu vào trống, sẽ thu được kết quả sau:
tổng() = 0 ;
sản phẩm() = 1 ;
max() = ;
phút() = .

5. Hiển thị tên biến và tên hàm.

Các biến cục bộ và toàn cầu. Hàm này có không gian biến đổi riêng, tách biệt với không gian làm việc của MATLAB. Do đó, nếu trước khi gọi hàm M trong cửa sổ lệnh MATLAB, một biến có tên, ví dụ: varName1, đã được xác định, thì bạn không thể tin rằng biến đó trong nội dung của hàm có cùng tên đã có sẵn. một giá trị nào đó. Đây là một biến hoàn toàn khác (mặc dù nó có cùng tên varName1) và nó nằm trong bộ nhớ của máy ở một vùng bộ nhớ khác.

Các biến được sử dụng trong nội dung của hàm M và không có cùng tên thông số hình thức của chức năng này được gọi là cục bộ. Theo một cách khác, họ nói rằng chúng chỉ hiển thị trong hàm M. Từ bên ngoài chúng không thể nhìn thấy được (không thể tiếp cận được). Các biến được xác định trong cửa sổ lệnh MATLAB không hiển thị bên trong hàm - chúng nằm bên ngoài hàm và không hiển thị bên trong hàm đó.

Tương tự, các biến cục bộ trong một hàm không thể nhìn thấy được trong một hàm M khác.

Một trong những kênh truyền thông tin từ cửa sổ lệnh MATLAB đến hàm M và từ hàm này sang hàm khác là cơ chế tham số hàm. Một cơ chế khác như vậy là các biến toàn cục.

Để một không gian làm việc MATLAB và một số hàm M chia sẻ một biến với một tên nhất định, nó phải được khai báo toàn cục ở mọi nơi bằng cách sử dụng từ khóa toàn cầu. Ví dụ: biến glVarS liên quan đến các phép tính trong không gian làm việc và trong hàm FuncWithGlobVar là cùng một biến (một vị trí bộ nhớ) xuyên suốt - vì vậy biến này có thể được sử dụng trong hàm mà không cần gán thêm bất kỳ giá trị nào cho nó:

Vì các biến toàn cục có phạm vi “toàn cầu”, để không vô tình (do nhầm lẫn) xác định lại nó ở đâu đó, nên đặt cho các biến đó những cái tên dễ nhớ hơn (dài hơn và có ý nghĩa hơn).

Bây giờ chúng ta hãy xem xét vấn đề về khả năng hiển thị của tên hàm. Nếu chúng ta đã lưu một hàm có tên nhất định trong một tệp có cùng tên và phần mở rộng m, ngoài ra, nếu hệ thống MATLAB biết đường dẫn đến tệp này trên đĩa thì hàm này có thể được gọi cả từ cửa sổ lệnh và từ các chức năng khác.

Tuy nhiên, trong văn bản của hàm M, bạn có thể đặt định nghĩa của một số hàm và chỉ một trong số chúng có thể có cùng tên với tên tệp. Chức năng này sẽ hiển thị từ cửa sổ lệnh và các chức năng khác. Tất cả các hàm khác sẽ là hàm nội bộ - chúng chỉ có thể được gọi bằng các hàm trong cùng một tệp.

Ví dụ: nếu tệp ManyFunc.m chứa văn bản tiếp theo

hàm ret1 = ManyFunc(x1, x2)

ret1 = x1 .* x2 + AnotherFunc(x1)

hàm ret2 = AnotherFunc(y)

ret2 = y .* y + 2 * y + 3;

bao gồm các định nghĩa của hai hàm có tên ManyFunc và AnotherFunc thì chỉ có thể gọi hàm ManyFunc từ bên ngoài. Nói cách khác, chúng ta có thể nói rằng chỉ những hàm có tên khớp với tên của tệp M mới được hiển thị từ bên ngoài. Các hàm còn lại phải được gọi bởi hàm này và các hàm bên trong khác.