j) Phương án sử dụng relay trong mạng LTE
3.2.1. Tổng quan về phần mềm mô phỏng 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ữngchương trình máy tínhviết trên nhiềungôn ngữ lập trìnhkhá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ử phát triển
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 một năm rưỡi. 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ăm1984.
Phiên bản đầu tiên Matlab 1.0 ra dời năm 1984 viết bằng C choMS-DOSPC được phát hành đầu tiên tạiIEEE 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 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ăm1992Matlab 4 thêm vào hỗ trợ2-Dvà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ảnMatlab Student Edition(Matlab ấn bản cho học sinh).
Năm1993Matlab choMS Windowsra đờ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.[1]
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ăm2010phiê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ácbài toán số trị(cảđại số tuyến tínhlẫngiải tích) trong nhiều lĩnh vực kĩ thuật.
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
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^2 và a.^2.
Cú pháp
Trước đây MatLab khôngphâ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áctừ 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)
binhPhuong = 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