https://github.com/ledangquangdangquang/matlab-tutorial
Readme tutorial for matlab
https://github.com/ledangquangdangquang/matlab-tutorial
matlab matlab-gui matlabtutorial tutorial
Last synced: 8 months ago
JSON representation
Readme tutorial for matlab
- Host: GitHub
- URL: https://github.com/ledangquangdangquang/matlab-tutorial
- Owner: ledangquangdangquang
- Created: 2025-02-25T10:49:56.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-25T10:50:02.000Z (about 1 year ago)
- Last Synced: 2025-06-17T05:38:33.616Z (10 months ago)
- Topics: matlab, matlab-gui, matlabtutorial, tutorial
- Homepage: https://ledangquangdangquang.notion.site/Matlab-19e38e416e5a801d9264d2b0bc755268
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Matlab
# $y = sin(t)$
- Tạo trục $t$: `t = 1:0.001:2` là 1 đoạn từ 0 đến 2 khoảng cách là 0.001
- `y = sin(t)` là tạo 1 hình sin thôi
- Có một chú ý là tất cả các biến trong matlab đều là 1 ma trận :
- `t` là ma trận `1x1001`
- `y` là ma trận `1x1001`
---
## Plot
- `plot(t, y)` là vẽ trục y theo trục t
- `plot(y)` là vẽ trục y theo chỉ số các cột của nó
- `plot(y,'r--*')` là vẽ trục y theo chỉ số của nó với **màu đỏ nét đứt, mỗi điểm là 1 dấu ***
- `plot(t, y, 'ro', 'MarkerSize', 3, 'MarkerFaceColor', 'b')`
- `plot(pos_centers(1,:), pos_centers(2,:), 'ro', 'MarkerSize', 3, 'MarkerFaceColor', 'b');` là vẽ tất cả các điểm của pos_centers với tọa độ như sau: cột `:` lấy x ở hàng 1 và y ở hàng 2
- Các **color, marker, line style** trong plot
### 3. **Dấu Marker (Marker Style)**
| Marker | Ký hiệu |
| --- | --- |
| Dấu chấm | `'.'` |
| Dấu tròn | `'o'` |
| Dấu sao | `'*'` |
| Dấu cộng | `'+'` |
| Dấu x | `'x'` |
| Vuông | `'s'` |
| Hình thoi | `'d'` |
| Tam giác lên | `'^'` |
| Tam giác xuống | `'v'` |
| Tam giác phải | `'>'` |
| Tam giác trái | `'<'` |
| Năm cánh | `'p'` |
| Sáu cánh | `'h'` |
### 2. **Kiểu đường (Line Style)**
| Kiểu đường | Ký hiệu |
| --- | --- |
| Đường liền | `'-'` |
| Đường đứt | `'--'` |
| Đường chấm | `':'` |
| Gạch - chấm | `'-.'` |
### 1. **Màu sắc (Color)**
| Màu | Ký hiệu | Mã RGB (normalized) |
| --- | --- | --- |
| Đỏ | `'r'` | `[1, 0, 0]` |
| Xanh lá | `'g'` | `[0, 1, 0]` |
| Xanh dương | `'b'` | `[0, 0, 1]` |
| Lục lam | `'c'` | `[0, 1, 1]` |
| Hồng | `'m'` | `[1, 0, 1]` |
| Vàng | `'y'` | `[1, 1, 0]` |
| Đen | `'k'` | `[0, 0, 0]` |
| Trắng | `'w'` | `[1, 1, 1]` |
---
- `title('this is a title')` là tạo tiêu đề cho hình vẽ
- `xlabel('x')` là đặt tên cho trục x
- `ylabel('y')` là đặt tên cho trục y
- `xlim([min max])` thiết lập giới hạn trục x
- `ylim([min max])` thiết lập giới hạn trục y
- `legend('chú giải')` tạo chú giải cho đường hình sin đã vẽ
- `grid('on')` bật lướt trục tọa độ
---
### $x = cos(t)$
- `hold on` giữ lại chưa vẽ plot
- `hold off` không giữ nữa (mục đích để vẽ 2 hay nhiều đồ thị trên 1 hình)
- `plot(t,y); hold on; plot(t,x); hold off` vẽ cả y và x trên cùng một trục tọa độ \
- `legend('y','x')` chú giải cho 2 đường y(t) và x(t)
---
- `subplot(m, n, p)` chia hình làm m x n slot (m hàng, n cột) và p là vị trí slot đang đứng
- Ví dụ: `subplot(1,2,1); plot(t,y); hold on; subplot(1,2,2); plot(t,x)`
## Stem
- Dùng y như `plot` nhưng cho tín hiệu rời rạc cụ thể thì có hình minh họa sau:

# Matrix
- Chỉ số của ma trận, mảng hay bất kỳ gì đều có chỉ số bắt đầu từ 1
- `y =[0 1 2 3 4 5; 0 1 2 3 4 5]` tạo 1 ma trận
$$
y = \begin{bmatrix}
0 & 1 & 2 & 3 & 4 & 5 \\
0 & 1 & 2 & 3 & 4 & 5
\end{bmatrix}
$$
---
### Phép toán trong ma trận
- `y .^ 2` các phần tử trong y đều được bình phương
- `y .* 2` các phần tử trong y đều được nhân 2
- `det(y)` lấy định thức (chỉ dùng cho ma trận vông)
- `y'` chuyển vị ma trận (và liên hợp phức luôn á)
- `mod(3,2)` lấy phần dư trong phép 3/2
- …
---
### SVD (singular value decomposition)
- `[ u s v ] = svd(y)` biến đổi svd cho ma trận y rồi lưu vào các biến u s v
- `s = diag(s)` chuyển s thành vector chứa các phần tử đường chéo
---
### Tạo ma trận
- `eye(3)` tạo ma trận đơn vị 3x3
- `rand(3, 2)` tạo ma trận random 3x2
- `randn(3, 2)` tạo ma trận random 3x2 với phân phối chuẩn
- `randi([1, 10], 3, 3)` tạo ma trận random 3x3 trong khoảng từ 1 đến 10
---
- `size(y)` trả về kích thước của ma trận ở đây là 2 6
- `length(y)` trả về kích thước lớn nhất của ma trận là 6
# Vòng lặp
- `for`
```matlab
for x = 0:2:10
disp(x);
end
```
x chạy từ 0 → 10 mỗi lần chạy tăng 2 (nói chung x giống như t ở phần y = sin(t) á)
- `while`
```matlab
x = 1;
while x <= 5
fprintf('Giá trị của x: %d\n', x);
x = x + 1;
end
```
chạy nếu điều kiện x ≤ 5 vẫn đúng
- Chú ý
- Có thể dùng các từ khóa **`break;`** hoặc `continue;` để thoát vòng lặp hoặc tiếp tục vòng lặp.
- Mọi câu lệnh thì luôn có `end` để báo hiệu kết thúc.
---
# Câu điều kiện
- Câu lệnh `if - else` :
```matlab
if condition
% Lệnh thực thi nếu condition đúng
elseif another_condition
% Lệnh thực thi nếu another_condition đúng
else
% Lệnh thực thi nếu không có điều kiện nào đúng
end
```
- Câu lệnh `switch - case` :
```matlab
switch variable
case value1
% Lệnh khi variable == value1
case value2
% Lệnh khi variable == value2
otherwise
% Lệnh mặc định nếu không khớp với case nào
end
```
# Làm tròn số
- `round(x)` làm tròn đến số nguyên gần nhất
- `floor(x)` làm tròn xuống, ký hiệu toán học: $\lfloor x \rfloor$
- `celi(x)` làm tròn lên, ký hiệu toán học: $\lceil x \rceil$
- `fix(x)` làm cho phần thập phân bằng 0
---
- `round(x, n)` làm tròn đến `n` chữ số thập phân
# Biến đổi nhị phân
- `dec2bin(x)` Đổi `x` từ thập phân sang nhị phân (trả về `string`)
- `de2bi(N,7,'left-msb')` đổi mảng `N` sang nhị phân 7 bit và `left-msb` là xếp các bit từ trái sang phải (mặc định `right-msb`) (trả về `vector`)