Bạn có biết MATLAB được viết tắt từ " MATrix LABoratory", hỗ trợ và làm việc trên các ma trận số học. Trong khi các ngôn ngữ khác làm việc với mỗi số học riêng biệt, thì MATLAB được thiết kế để thực hiện tính toán trên các đơn vị cơ bản là các ma trân (matrix) và các mảng (array).
Tất cả các biến được lưu trên MATLAB dưới dạng các mảng nhiều chiều. Ví dụ,
Cách tạo một ma trận trong MATLAB
Để phân biệt các phân tử của một biến (được viết dưới dạng ma trân), dùng dấu chấm phấy (;) để chia cách các hàng của ma trận, các dấu cách hoặc dấu phẩy để chỉ các phần tử nằm cùng một hàng của ma trận. Ví dụ,
>> A = [1 2 3; 4 5 6; 7, 8, 9]
Các phần tử trong ma trận có thể là số thực hoặc là số phức. Kích thước của ma trận khai báo phải được lắp đầy bởi các phần tử, ngay cả giá trị của phần tử là NaN (Not-a-Number). Ví dụ,
>> A = [1 2 3; 4 5 6; 7 8 ]
A is not valid matrix
A is not valid matrix
Cách truy xuất vào dữ liệu của từng phần tử của một ma trận
Không giống như các ngôn ngữ khác, phần tử của ma trận bắt đầu từ chỉ số 1 (không phải là 0). Nên để truy cập vào phần tử của ma trận, chỉ số hàng và chỉ số cột tính từ 1. Ví dụ, phần tử nằm ở hàng thứ i , cột thứ j của biến A, được truy xuất là A(i,j). Đối với các ma trận một hàng hay một cột, thì truy xuất sẽ là chỉ số của phần tử đó trong hàng (hoặc cột) , A(i). Quay lại ma trận A đã khai báo ở trên, A(2,3) = 6
Matlab cung cấp các hàm nhằm hỗ trợ việc tạo ra các ma trận đặc biệt.
Matlab cung cấp các hàm nhằm hỗ trợ việc tạo ra các ma trận đặc biệt.
Ma trận đơn vị (I : identity matrix) : là một ma trận vuông, trong đó các phân tử trên đường chéo ma trân bằng một, và những phần tử còn lại có giá trị bằng không. Ví dụ, để tạo một ma trận đơn vị có kích thước (2 x 2)
>> B = eye(2)
Function eye cũng có thể tạo một trận đơn vị không vuông có kích thước m x n.
>> B = eye(2, 3)"
Ma trận đơn vị được tạo dựa trên định dạng của một ma trận hay một biến có trước. Ví dụ, P là một số phức
. Ma trân đơn vị được tạo ra giống P là một ma trân đơn vị số phức.
>> B = eye(2, 'like', P)
Ma trận đường chéo (Diagonal matrix): là một ma trận mà giá trị của các phần tử nằm ngoài đường chéo bằng không. Thông thường, trong matlab, ma trận đường chéo được xây dựng từ phần tử của một ma trân một hàng hay một cột (vector ma trận). Ví dụ, cho vector v = [2 1 -1 2]. Tạo một ma trận đường chéo theo vector v trong matlab sẽ hỗ trợ hàm như sau:
>> C = diag(v)
Trong matlab, các phần tử trên đường chéo của ma trận cũng có thể được dịch sang trái hoặc sang phải, bằng cách sử dụng thêm đối số cho hàm diag. Ví dụ,
>> C = diag(v, 1)
Nếu A là một ma trận hình vuông, để lấy các phần tử đường chéo của A, ta cũng có thể dùng hàm diag. Ví dụ,
>> C = diag(A)
C=[1 5 9]
C=[1 5 9]
Ma trận một (Ones matrix) : là ma trận mà tất cả các phần tử đều bằng một. Trong matlab để tạo ra ma trận một có m hàng và n cột.D = ones(m, n)
Ma trận không (Zeros matrix) : là ma trận mà tất cả các phần tử đều bằng không. Để tạo ma trận không có m hàng và n cột là :
D = zeros(m, n)
Ma trận Hilbert (Hilbert matrix): là ma trận vuông mà mỗi phần tử ij sẽ có giá trị là
. Ví dụ,
>> H = hilb(2)
Ma trận Toeplitz (Toeplitz matrix): đặc điểm của ma trận này là giá trị của phần tử hàng i cột j bằng với giá trị của hàng i+1 và j +1. Ma trận Toeplitz có thể dễ dàng được tách thành ma trận LU (ma trận tam giác trên và ma trận tam giác dưới). Ví du, một ma trận Toeplitz từ vector thành phần r và c có cùng phần tử đầu tiên được viết rằng.
>> r = [1 2 3]
>> c = [1 5 6]
>> T = Toeplitz(r, c)
>> c = [1 5 6]
>> T = Toeplitz(r, c)
Ma trận ngẫu nhiên (random matrix): là một ma trận vuông mà những phần tử được chọn ngẫu nhiên trong một khoảng (mặc định là 0 và 1). Ví du, rand(1) = 0.8256
Mảng cấu trúc (structure array)
Mảng cấu trúc là kiểu dữ liệu trong matlab, được dùng để nhóm các trường, đối tượng hoặc tập dữ liệu lại với nhau. Để truy cập vào một trường ta dùng dấu chấm(.), CauTruc.TenTruong. Ví dụ,
>> s.a = 'I love you';
>> s.b = [1, 2, 3];
>> s.b(3) = 3;
>> s.b = [1, 2, 3];
>> s.b(3) = 3;
Phân biệt giữa array và ma trận trong matlab. Ví du,
>> x = {5} % <-- tạo một mảng (cell array)
>> y = 5 % <-- tạo một ma trân 1 phần tử
>> x{1} = 5 % <-- truy cập vào phần tử đầu tiên của mảng
>> y{1} %<-- ouf! đây không phải một mảng các phần tử.
>> S{1} = s % -- phần tử đầu tiên của mảng là một mảng cấu trúc
>> S{1}.a = 'I love you'
>> y = 5 % <-- tạo một ma trân 1 phần tử
>> x{1} = 5 % <-- truy cập vào phần tử đầu tiên của mảng
>> y{1} %<-- ouf! đây không phải một mảng các phần tử.
>> S{1} = s % -- phần tử đầu tiên của mảng là một mảng cấu trúc
>> S{1}.a = 'I love you'
Matlab hỗ trợ các phép tính trên ma trận và mảng
Matlab hỗ trợ tất cả các phép tính với ma trận, như là ma trận nghịch đảo inv(A), ma trận chuyển vị conj(A), cộng trừ hai ma trận (+/-), nhân hai ma trận(*), hàm mũ (^). Bên cạnh đó, cũng có phép tính cho từng phân tử của ma trận. Ví dụ , cho ma trận
>> A = [1 2; 3 4]
>> B = [1 3; 2 4]
>> A*B
ans = [5 11; 11 25]
>> A.*B
ans = [1 6; 6 16]
>> B = [1 3; 2 4]
>> A*B
ans = [5 11; 11 25]
>> A.*B
ans = [1 6; 6 16]
Trên đây là những kiến thức cơ bản về cách tổ chức dữ liệu, và truy xuất dữ liệu trong Matlab. Các kiến thức nâng cao của Maltab sẽ được trình bày trong những phần sau.
Merci à lire!!
Comments
Post a Comment