Tại sao dùng matlab để mô phỏng
Giải pháp tiện nhất để điều khiển một hệ thống thực là lập trình lại giải thuật điều khiển trên một chip vi điều khiển (đọc lại bài bạn vuongtv-ac đã trả lời ở trên).
Hướng đi sử dụng trực tiếp Matlab và Simulink trên máy tính để điều khiển một hệ thống thực thì có mấy vấn đề các bạn cần giải quyết: - Có một bo mạch đệm, nó giao tiếp với máy tính (qua các ngõ giao tiếp thông thường như serial, USB, Ethernet, wifi...) và đồng thời nó cũng có các chân (input/output) để đọc tín hiệu cảm biến và ra lệnh cho hệ thống cần điều khiển. - Nếu bạn có hàm điều khiển (file .m) chạy trên Matlab, bạn cần tìm cách mở được cổng giao tiếp trên máy tính để giao tiếp được với bo mạch đệm. - Nếu bạn có một bộ điều khiển mô phỏng trên Simulink, bạn phải tìm cách (tạo thêm block mới chẳng hạn) làm cho Simulink kết nối được với bo mạch đệm. - Bạn chỉ cần lập trình chip trên bo mạch đệm với chức năng là trung gian truyền tín hiệu, không cần tính toán gì. --- Trên thế giới đã có nhiều công ty cung cấp các bo mạch đệm như vậy, kể cả Mathworks (ví dụ: xem gói "xPC target" trong Simulink, hình như cả gói Real time Embedded workshop gì đó). Nếu bạn muốn mua thì sẽ phải mua cả phần cứng và phần mềm, giá cả tùy theo độ tiện dụng và độ tin cậy. Nếu bạn muốn tự làm: cũng có thể nghiên cứu được. Các bạn có thể tham khảo cái này: Control an Arduino from MATLAB | File Exchange Pick of the Week và Arduino Support from MATLAB MATLAB Support Package for Arduino (aka ArduinoIO Package) - File Exchange - MATLAB Central Run on Target Hardware | File Exchange Pick of the Week --- Nếu các bạn muốn tìm giải pháp ít tốn kém, có thể sử dụng phần mềm nguồn mở: hãy học cách cài Linux lên một bo ARM, chạy phần mềm Octave trên Linux (tôi gợi ý Octave vì nó tương thích tốt với Matlab, các file .m của Matlab mang sang Octave hầu như đều chạy được), rồi dùng các chân GPIO trên bo ARM để điều khiển (ngay trong Octave, bạn có thể can thiệp vào phần cứng, kích hoạt các chân GPIO). Mô hình hóa và mô phỏng thiết bị điện -dành cho sinh viên chuyên ngành TBĐ-ĐT Soạn bởi: Trần Vĩnh Thái B/m Thiết bị điện -điện tử ĐHBK Hà nội ĐHBK Hànội B/m Thiết bị điện -điện tử 2 NỘI DUNG Vai trò của mô hình hóa và mô phỏng Mô hình toán và phương pháp số Mô hình toán của hệ vật lý Phương pháp số giải phương trình vi phân Công cụ MATLAB/Simulink MATLAB Simulink Phân tích, mô phỏng một số mô hình thiết bị điện với MATLAB/Simulink ĐHBK Hànội B/m Thiết bị điện -điện tử 3 Yêu cầu với sinh viên Tham dự lớp đầy đủ Làm các bài tập về nhà Hoàn thành bài tập lớn Thi cuối học kỳ ĐHBK Hànội B/m Thiết bị điện -điện tử 4 Ví dụ 1.1: Các bước tiến hành mô phỏng. 21 Ví dụ 2.1: Cửa sổ lệnh Matlab. 27 Ví dụ 2.2: Khỏi tạo và gán biến trong Matlab. 27 Ví dụ 2.4: Lưu biến thành file trong Matlab. 29 Ví dụ 2.5: Xóa biến trong Workspace. 29 Ví dụ 2.6: Cách sử dụng dấu ; sau câu lệnh để không xuất kết quả ra màn hình. 29 Ví dụ 2.7: Cách sử dụng hàm help trong Matlab. 30 Ví dụ 2.8: Cách khai báo ma trận trong Matlab. 32 Ví dụ 2.9: Cách tạo vector trong Matlab. 33 Ví dụ 2.10: Tạo ma trận số lẻ giảm. 33 Ví dụ 2.11: Cách tạo ma trận rỗng trong Matlab. 33 Ví dụ 2.12: Một số cách tiêu biểu tạo ma trận trong Matlab. 34 Ví dụ 2.13: Cách xác định kích thước và số phần tử ma trận trong Matlab. 36 Ví dụ 2.14: Cách chuyển ma trận bất kỳ thành ma trận hàng trong Matlab. 37 Ví dụ 2.15: Tính tổng theo hàng, cột và toàn ma trận trong Matlab. 38 Ví dụ 2.16: Cách sử dụng hàm mean trong Matlab. 39 Ví dụ 2.17: Cách sử dụng hàm min và max trong Matlab. 41 Ví dụ 2.18: Cách ghép nối ma trận trong Matlab. 42 Ví dụ 2.19: Một số kỹ thuật trích xuất phần tử ma trận trong Matlab. 43 Ví dụ 2.20: Cách sử dụng chỉ số ma trận logic trong Matlab. 46 Ví dụ 2.21: Cách kết hợp phép gán và chỉ số logic trong Matlab. 47 Ví dụ 2.22: Phép xóa các phần tử trong ma trận trong Matlab. 48 Ví dụ 2.23: Lỗi không xóa phần tử trong ma trận của Matlab. 49 Ví dụ 2.24: Các cách mở rộng ma trận trong Matlab. 49 Ví dụ 2.25: Mở rộng ma trận bằng phép nhân phần tử trong Matlab. 50 Ví dụ 2.26: Sử dụng chỉ số tuyến tính để thay đổi giá trị phần tử trong Matlab. 51 Ví dụ 2.27: Cách tạo ma trận có phần tử tăng dần dùng chỉ số tuyến tính. 52 Ví dụ 2.28: Cách sử dụng hàm ind2sub trong Matlab. 52 Ví dụ 2.29: Cách sử dụng hàm sub2ind trong Matlab. 52 Ví dụ 2.30: Cách sử dụng hàm reshape để điều chỉnh kích thước ma trận trong Matlab. 53 Ví dụ 2.31: Phối hợp sử dụng hàm numel và hàm reshape trong điều chỉnh kích thước ma trận trong Matlab. 56 Ví dụ 2.32: Sử dụng toán tử trên từng phần tử ma trận trong Matlab. 56 Ví dụ 2.33: Các phép nhân ma trận trong Matlab. 58 Ví dụ 2.34: Các cách chia ma trận trong Matlab. 60 Ví dụ 2.35: Các hàm đại số tuyến tính cơ bản trong Matlab. 61 Ví dụ 2.36: Cách sử dụng hàm ndims để tìm số chiều một ma trận trong Matlab. 62 Ví dụ 2.37: Mảng đa chiều. 63 Ví dụ 2.38: Tính số ngày của tháng dùng cấu trúc if. 64 Ví dụ 2.39: Tính số ngày của tháng dùng cấu trúc switch. 64 Ví dụ 2.40: So sánh cách dùng vòng lặp for và không dùng vòng lặp for trong Matlab. 65 Ví dụ 2.41: Thay thế vòng lặp for bằng chỉ số và phép gán. 66 Ví dụ 2.42: Cách sử dụng while trong Matlab. 67 Ví dụ 2.43: Mảng ký tự. 68 Ví dụ 2.44: Các hàm xử lý chuỗi trong Matlab. 69 Ví dụ 2.45: Chuyển mã ASSCI trong Matlab. 69 Ví dụ 2.46: Chuyển đổi từ số hệ thập phân sang các hệ cơ số khác. 70 Ví dụ 2.47: Chuyển đổi số thành chuỗi và ngược lại. 70 Ví dụ 2.48: Xử lý chuỗi trong Matlab. 71 Ví dụ 2.49: Xuất chuỗi ra màn hình trong Matlab. 72 Ví dụ 2.50: Lệnh format trong Matlab. 72 Ví dụ 2.51: Mảng cell trong Matlab. 73 Ví dụ 2.52: Xóa trong mảng cell. 73 Ví dụ 2.53: Chuyển đổi giữa ma trận và mảng cell. 73 Ví dụ 2.54: Nối chuỗi trong Matlab. 74 Ví dụ 2.55: Các hàm so sánh chuỗi trong Matlab. 75 Ví dụ 2.56: Hàm chuỗi trong chuỗi trong Matlab. 75 Ví dụ 2.57: Tìm chuỗi trong mảng cell. 75 Ví dụ 2.58: Toán tử trên tập trong Matlab. 76 Ví dụ 2.59: Hàm all và any trong Matlab. 78 Ví dụ 2.60: Hàm unique trong Matlab. 78 Ví dụ 2.61: Cấu trúc trong Matlab. 79 Ví dụ 2.62: Vẽ đồ thị 2D dùng hàm plot trong Matlab. 85 Ví dụ 2.63: Điều chỉnh đồ thị trong Matlab. 86 Ví dụ 2.64: Hàm vẽ đồ thị fplot. 86 Ví dụ 2.65: Đặt tên cho đồ thị. 87 Ví dụ 2.66: Giới thiệu cách vẽ đồ thi dạng log theo trục đồ thị. 88 Ví dụ 2.67: Cách thức vẽ thanh lỗi trên đồ thị Matlab. 90 Ví dụ 2.68: Vẽ đồ thị con trong đồ thị. 91 Ví dụ 2.69: 5 bước vẽ biểu đồ tần suất của phân bố Gauss và so sánh lý thuyết. 93 Ví dụ 2.70: Vẽ đồ thị tần suất cho dữ liệu rời rạc. 94 Ví dụ 2.71: Vẽ hàm PDF và CDF của một biến ngẫu nhiên dùng hàm area. 97 Ví dụ 2.72: Cách sử dụng hàm có sẵn trong Matlab để vẽ hàm CDF và PDF của một phân bố cho trước. 98 Ví dụ 2.73: Cách chuyển đổi ảnh mức xám và biểu diễn lên đồ thị trong Matlab. 99 Ví dụ 2.74: Cách thức vẽ biểu đồ nhiệt trong Matlab. 100 Ví dụ 2.75: Chế độ LaTeX trong Matlab. 103 Ví dụ 2.76: Hàm latex và biến symbolic. 104 Ví dụ 2.77: Lập trình giao diện trong Matlab. 107 Ví dụ 2.78: Cách thức lập trình hiệu quả trong Matlab. 109 Ví dụ 2.79: So sánh cách thức lập trình theo Matlab và theo C. 110 Ví dụ 2.80: Theo dõi thời gian chạy của mã lệnh Matlab dùng hàm tic và toc. 110 Ví dụ 3.1: Tạo tín hiệu và xuất lên máy hiện sóng. 116 Ví dụ 3.2: Cách thức ghép nối và cấu hình các khối trong Simulink. 117 Ví dụ 3.3: Mô phỏng kênh truyền nhiễu trắng trong Simulink. 120 Ví dụ 4.1: Sử dụng giải thuật đệ quy để tạo biến ngẫu nhiên phân bố đều. 123 Ví dụ 4.2: Khảo sát chuỗi giả ngẫu nhiên theo giá trị seed. 124 Ví dụ 4.3: Tạo biến ngẫu nhiên bằng phương pháp biến đổi ngược. 125 Ví dụ 4.4: Tạo biến ngẫu nhiên rời rạc bằng phương pháp chấp nhận loại trừ. 127 Ví dụ 4.5: Tạo biến ngẫu nhiên bằng phương pháp tổng hợp. 128 Ví dụ 4.6: Tạo biến ngẫu nhiên bằng phương pháp biến đổi ngược. 130 Ví dụ 4.7: Tạo biến ngẫu nhiên bằng phương pháp loại bỏ. 131 Ví dụ 4.8: Dùng hàm mean để tính kỳ vọng cho biến ngẫu nhiên. 134 Ví dụ 4.9: Lập trình kiểm chứng tính chất của phương sai. 135 Ví dụ 4.10: Cách so sánh kỳ vọng và phương sai theo lý thuyết và mô phỏng trong Matlab. 135 Ví dụ 4.11: Cách tạo biến ngẫu nhiên tương quan và cách kiểm chứng hệ số tương quan. 137 Ví dụ 4.12: Kiểm chứng bất đẳng thức Markov bằng mô phỏng Matlab. 138 Ví dụ 4.13: Kiểm chứng bất đẳng thức Chebyshev bằng mô phỏng Matlab. 139 Ví dụ 4.14: Kiểm chứng định luật số lớn bằng mô phỏng Matlab. 139 Ví dụ 4.15: Kiểm chứng định lý giới hạn trung tâm bằng mô phỏng Matlab với phân bố mũ. 140 Ví dụ 4.16: Kiểm chứng định lý giới hạn trung tâm bằng mô phỏng Matlab với phân bố đều. 142 Ví dụ 4.17: Mô phỏng đường truyền fading Rayleigh do các hiện tượng phản xạ, tán xạ và nhiễu xạ. 143 Ví dụ 4.18: Mô phỏng và kiểm chứng phân bố nhị thức. 146 Ví dụ 4.19: Mô phỏng khả năng thắng trận của một trò chơi dùng mô phỏng. 147 Ví dụ 4.20: Cách sử dụng hàm all trong kiểm chứng mô phỏng các lần thảy liên tiếp nhau. 149 Ví dụ 4.21: Mô phỏng số cuộc gọi đến tổng đài và kiểm chứng lý thuyết. 150 Ví dụ 4.22: Tạo phân bố chuẩn từ hàm Matlab unifrnd. 152 Ví dụ 4.23: Tạo phân bố đều rời rạc và kiểm chứng. 154 Ví dụ 4.24: Sử dụng biến ngẫu nhiên để ước lượng tích phân. 154 Ví dụ 4.25: Mô phỏng ước lượng số pi bằng Matlab. 156 Ví dụ 4.26: Tạo biến ngẫu nhiên có phân bố chuẩn phức. 158 Ví dụ 4.27: Kiểm chứng biểu thức xác suất bằng mô phỏng. 158 Ví dụ 4.28: Cách tạo biến ngẫu nhiên phân bố chuẩn trong Matlab. 159 Ví dụ 4.29: Cách tạo biến ngẫu nhiên phân bố mũ trong Matlab. 161 Ví dụ 4.30: Khảo sát hàm PDF của phân bố Rayleigh theo tham số. 163 Ví dụ 4.31: Mô phỏng biến ngẫu nhiên có phân bố Rayleigh theo tham số cho trước và kiểm chứng với lý thuyết. 164 Ví dụ 4.32: Hãy mô phỏng kiểm chứng có thể tạo biến ngẫu nhiên có phân bố Rayleigh từ phân bố chuẩn. 165 Ví dụ 4.33: Tạo biến ngẫu nhiên có phân bố Nakagami-m từ hàm makedist. 167 Ví dụ 4.34: Tạo biến ngẫu nhiên có phân bố Nakagami-m từ biến ngẫu nhiên có phân bố Gamma. 168 Ví dụ 4.35: Sử dụng hàm tạo và vẽ tính hiệu tương tự. 170 Ví dụ 4.36: Vẽ tín hiệu tương tự theo tham số cho trước. 171 Ví dụ 4.37: Mô phỏng tạo chuỗi bit và tính xác suất xuất hiện. 172 Ví dụ 4.38: Tạo ma trận lỗi theo quy định cho trước. 172 Ví dụ 4.39: Tạo nguồn tín hiệu rời rạc với giá trị cho trước và xác suất xuất hiện cho trước. 173 Ví dụ 4.40: Mô phỏng biến ngẫu nhiên có phân bố Gamma với tham số cho trước. 176 Ví dụ 4.41: Mô phỏng quá trình nén theo luật . 177 Ví dụ 4.42: Lượng tử tín hiệu. 179 Ví dụ 4.43: Giải thuật Lloyds. 180 Ví dụ 4.44: Mô phỏng quá trình mã hóa và giải mã DPCM. 181 Ví dụ 4.45: Mô phỏng mã hóa Huffman và entropy. 183 Ví dụ 4.46: Mô phỏng mã hóa số học trong Matlab. 184 Ví dụ 4.47: Mô phỏng mã CRC trong Matlab. 185 Ví dụ 4.48: Mô phỏng quá trình mã hóa và giải mã Hamming. 186 Ví dụ 4.49: Mô phỏng quá trình mã hóa và giải mã mã vòng. 187 Ví dụ 4.50: Mô phỏng quá trình mã hóa và giải mã BCH dùng Matlab. 188 Ví dụ 4.51: Mô phỏng quá trình mã hóa và giải mã RS dùng Matlab. 189 Ví dụ 4.52: Mô phỏng quá trình mã hóa và giải mã mã xoắn dùng Matlab. 190 Ví dụ 4.53: Mô phỏng điều chế FM băng gốc dùng Matlab. 192 Ví dụ 4.54: Mô phỏng điều chế AM và SSB dùng Matlab. 193 Ví dụ 4.55: Mô phỏng điều chế AM và SSB dùng Matlab. 194 Ví dụ 4.56: Khảo sát phổ của điều chế SSB trước và sau điều chế. 196 Ví dụ 4.57: Mô phỏng điều chế QAM. 196 Ví dụ 4.58: Mô phỏng mã Gray trong điều chế. 199 Ví dụ 4.59: Mô phỏng quá trình điều chế và giải điều chế BPSK ở kênh truyền nhiễu tắng. Kiểm chứng với lý thuyết. 200 Ví dụ 4.60: Hàm berawgn trong Matlab. 201 Ví dụ 4.61: Mô phỏng điều chế MPSK. 202 Ví dụ 4.62: Mô phỏng điều chế MPAM. 204 Ví dụ 4.63: Biểu đồ chòm sao trong điều chế. 205 Ví dụ 4.64: Lọc tín hiệu trong Matlab. 207 Ví dụ 5.1: Mô phỏng kênh truyền nhị phân. 211 Ví dụ 5.2: Tạo kênh truyền nhị phân bằng hàm bsc trong Matlab. 212 Ví dụ 5.3: Tạo nhiễu trắng dùng hàm awgn trong Matlab. 213 Ví dụ 5.4: Cộng nhiễu trắng vào tín hiệu điều chế MQAM. 214 Ví dụ 5.5: Tạo nhiễu trắng và cộng vào tín hiệu điều chế MQAM bằng phương pháp trực tiếp. 215 Ví dụ 5.6: Mô phỏng kênh truyền nhiễu trắng với điều chế BPSK. 216 Ví dụ 5.7: Mô phỏng kênh truyền log-normal. 218 Ví dụ 5.8: Mô phỏng kênh truyền fading Rayleigh bằng 3 cách. 220 Ví dụ 5.9: Mô phỏng kênh truyền Nakagami-m bằng 3 cách. 223 Ví dụ 5.10: Mô phỏng kênh truyền fading Rician bằng hai cách. 226 Ví dụ 5.11: Mô phỏng kênh truyền tương quan. 228 Ví dụ 6.1: Mô phỏng và ước lượng tỷ số tín hiệu trên nhiễu ở kênh truyền fading Rayleigh. 234 Ví dụ 6.2: Mô phỏng và ước lượng tỷ số tín hiệu trên nhiễu trung bình của hệ thống kết hợp lựa chọn. 235 Ví dụ 6.3: Mô phỏng và ước lượng tỷ số tín hiệu trên nhiễu trung bình của hệ thống kết hợp theo tỷ lệ tối ưu trong Matlab. 236 Ví dụ 6.4: Mô phỏng và ước lượng dung lượng hệ thống SISO ở kênh truyền nhiễu trắng và kênh truyền fading. 238 Ví dụ 6.5: Mô phỏng và ước lượng xác suất dừng hệ thống SISO ở kênh truyền fading Rayleigh. 240 Ví dụ 6.6: Mô phỏng và ước lượng xác suất dừng của hệ thống phân tập thu. 243 Ví dụ 6.7: Mô phỏng và ước lượng tỷ lệ lỗi bit trung bình của điều chế BPSK của hệ thống phân tập thu SC trên kênh truyền fading Rayleigh. 244 Ví dụ 6.8: Mô phỏng và ước lượng xác suất dừng của hệ thống MRC ở kênh truyền fading Rayleigh. 248 Ví dụ 6.9: Mô phỏng và ước lượng tỷ lệ lỗi bit trung bình của hệ thống MRC cho điều chế BPSK ở kênh truyền fading Rayleigh. 249 Ví dụ 6.10: Mô phỏng và ước lượng hệ thống mã không gian thời gian cho điều chế BPSK ở kênh truyền fading Rayleigh. 253 Ví dụ 6.11: Mô phỏng hệ thống điều chế thích ứng ở kênh truyền fading. 257 Ví dụ 6.12: Mô phỏng hệ thống chuyển tiếp hai chặng ở kênh truyền fading Rayleigh. 264 |