An open API service indexing awesome lists of open source software.

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

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:

![untitled.jpg](untitled.jpg)

# 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`)