Professional Documents
Culture Documents
• Tạo mảng
• Một số mảng đặc biệt
• Mảng chuyển vị
• Truy cập phần tử của mảng
• Thêm phần tử vào mảng
• Xóa phần tử trong mảng
• Tạo mảng trống
• Một số hàm có sẵn với mảng
• Chuỗi ký tự
• Ví dụ
TẠO MẢNG
Các phần tử của hàng ngăn cách bởi dấu cách hoặc dấu phẩy (,)
Các phần tử của cột ngăn cách bởi dấu chấm phẩy (;) hoặc enter xuống dòng
TẠO MẢNG
Dùng dấu hai chấm (:) để tạo véc tơ hàng cách đều
x = [m:q:n] hoặc x = m:q:n
Bước nhảy q có thể nguyên hoặc không nguyên, có thể dương
hoặc âm, nếu không chỉ định q thì bước nhảy mặc định bằng 1
>> e = [1:4]
e= 1 2 3 4
TẠO MẢNG
Dùng lệnh linspace để tạo véc tơ hàng cách đều
x = linspace(a,b,n)
Nếu không chỉ định n thì số lượng mặc định bằng 100
Mảng hai chiều (ma trận): các phần tử trong hàng ngăn cách bởi dấu
cách hoặc dấu phẩy (,). Dùng dấu chấm phẩy (;) hoặc enter để tạo
hàng mới.
>> a = [1 2; 3 4] >> d = [1 2 3; 3:2:7; linspace(2,3,3)]
a= d=
1 2 1.0000 2.0000 3.0000
3 4 3.0000 5.0000 7.0000
2.0000 2.5000 3.0000
>> b = [1 2
3 4] >> e = [1 2; 3 4 5]
??? Error using ==> vertcat
b= CAT arguments dimensions are not consistent.
1 2
3 4
>> x = 1; y = 2;
>> c = [x/y, x^y; sin(x), cos(pi/y)]
c=
0.5000 1.0000
0.8415 0.0000
MỘT SỐ MẢNG ĐẶC BIỆT
>> c = eye(2)
c=
1 0
0 1
MẢNG CHUYỂN VỊ
Sử dụng dấu phẩy trên (’) để tạo mảng chuyển vị
>> a = [1 2 3] >> c = [1 2 3; 4 5 6]
a= c=
1 2 3 1 2 3
4 5 6
>> b = a'
b= >> d = c'
1 d=
2 1 4
3 2 5
3 6
>> a = [1 3 2 4]
a= 1 3 2 4
>> b = a(3)
b= 2
>> a(3)=5
a= 1 3 5 4
TRUY CẬP PHẦN TỬ CỦA MẢNG
Truy cập một phần tử của ma trận: dùng dấu ngoặc đơn () để chỉ định
thứ tự hàng, cột của phần tử cần truy cập
>> a = [1 2 3; 7 6 5]
a=
1 2 3
7 6 5
>> b = a(2,2)
b= 6
>> a(2,3) = 8
a=
1 2 3
7 6 8
Truy cập nhiều phần tử liên tiếp của véc tơ hoặc mảng: dùng dấu hai
chấm (:) để truy cập một dải phần tử trong mảng
Với ma trận:
>> g = c(1:2,1:2)
g=
1 2
7 6
TRUY CẬP PHẦN TỬ CỦA MẢNG
Truy cập đến các phần tử ở nhiều vị trí rải rác bằng cách liệt kê
các vị trí đó trong dấu ngoặc vuông []
Câu lệnh: A([các hàng],[các cột]), các vị trí hàng, cột ngăn cách
nhau bởi dấu phẩy (,)
>> d = c([1,2],[1,5,2:6])
d=
1 9 3 5 7 9 11
1 1 1 1 1 1 1
Gán giá trị cho vị trí hàng, cột cần thêm tương ứng. Nếu như có
những phần tử không được gán giá trị thì MATLAB sẽ tự động gán
giá trị 0 cho phần tử đó
Sử dụng dấu ngoặc vuông []: truy cập các phần tử cần xóa và gán cho
chúng dấu []
>> b([1:3],:) = []
b=
0 0 0 1 0
0 0 0 0 1
Lưu ý: nếu sau khi xóa, mảng bị biến dạng, không còn giữ được dạng
vuông vức chữ nhật, thì lệnh xóa sẽ báo lỗi và không thực hiện được
TẠO MẢNG TRỐNG
Sử dụng dấu ngoặc vuông []: dấu [] có thể dùng để tạo sẵn một mảng
chưa có phần tử nào, chờ đợi được lấp đầy bởi các bước tiếp theo
của thuật toán
a = []
for k = 1:5
a = [a, k]
end
MỘT SỐ HÀM CÓ SẴN VỚI MẢNG
Lệnh Mô tả Ví dụ
Trả lại số phần tử của
length(A) véc tơ A, hoặc số cột
của ma trận A
Lệnh Mô tả Ví dụ
>> fliplr(a)
ans =
fliplr(x) Lật ma trận, véc tơ theo chiều 2 3 1
flipud(x) trái phải, hoặc trên dưới 7 1 4
5 5 2
>> rot90(a,2)
ans =
rot90(x,k) Xoay ma trận theo góc k*900 5 5 2
7 1 4
2 3 1
>> b = [1 3 2 1]
b= 1 3 2 1
x(end) Trả lại phần tử cuối cùng của >> b(end)
véc tơ a ans = 1
MỘT SỐ HÀM CÓ SẴN VỚI MẢNG
Lệnh Mô tả
find(x) Tìm kiếm các phần tử của mảng
>> diag(a)
ans =
1
5
VÍ DỤ 1
Dùng lệnh ones và zeros, tạo ma trận 4x5 với hai hàng đầu toàn 0 và hai
hàng cuối toàn 1
>> c = [a;b]
c=
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
VÍ DỤ 2
Tạo ma trận 6x6 trong đó hai hàng giữa và hai cột giữa toàn 1, còn lại toàn 0
>> a = zeros(6)
a=
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
Tạo các mảng này, sau đó, bằng một lệnh duy nhất, hãy:
- thay thế 4 cột cuối của hàng 1 và hàng 3 của A bởi 4 cột đầu của hai hàng
đầu của B
- thay thế 4 cột cuối của hàng thứ 4 của A bởi các phần tử từ 5 - 8 của v
- thay thế 4 cột cuối của hàng thứ 5 của A bởi các phần tử từ cột 2 - 5 của
hàng thứ 3 của B
- Là một mảng có các phần tử là các ký tự, đặt trong dấu ngoặc đơn ‘’
- Các ký tự có thể là chữ, số, ký hiệu hoặc dấu cách
- Ví dụ ‘ad eg’ , ’3%f3’ , ’2k9!{]’
- ‘’ --> ‘
>> a = 'abc def' >> c = 'abc '' def'
a= c=
abc def abc ' def
>> b(3)
ans =
n
>> b(4)
ans =
>>
CHUỖI KÝ TỰ
>> x = 234
x=
234
>> y = '234'
y=
234
>> x*2
ans =
468
>> y*2
ans =
100 102 104
Chuỗi ký tự cũng có thể đưa vào các mảng, mỗi dòng của mảng là một chuỗi ký
tự. Khi đó yêu cầu các chuỗi trong mỗi dòng có độ dài bằng nhau. Điều này bất
tiện nếu làm bằng tay.
MATLAB xây dựng sẵn lệnh char dùng để tạo mảng ký tự từ các chuỗi ký tự có
độ dài khác nhau
>> thong_tin = char('ho ten:' , 'nguyen van tuan' , 'diem so:' , 'A+')
thong_tin =
ho ten:
nguyen van tuan
diem so:
A+