Bắt đầu với MATLAB
Mục lục
Giới thiệu vềMATLAB . 1
Ngôn ngữcủa công nghệtính toán . 1
Các tính năng cơbản . 1
Các thành phần của cửa sổchương trình . 2
Ma trận và Mảng . 4
Tạo mảng . 4
Các phép toán với ma trận và mảng . 4
Ghép nối ma trận . 6
Sốphức . 7
Chỉsốcủa mảng . 8
Các biến và Workspace . 10
Chuỗi kí tự. 11
Function . 12
Vẽhình 2-D và 3-D. 13
Vẽhình 2-D. 13
Vẽhình 3-D. 15
Vẽ đồthịcon . 16
Script . 17
Ví dụvềScript . 17
Vòng lặp và các câu lệnh có điều kiện . 18
Địa chỉcủa Script . 19
Help . 21
ng thay đổi để chưa được phần tử mới.
9
A(4,5) = 17
A =
16 2 3 13 0
5 11 10 8 0
9 7 6 12 0
4 14 15 1 17
Để truy cập đến nhiều phần tử của một mảng, sử dụng dấu hai chấm (:) theo cấu trúc start:end. Dấu hai
chấm cho phép chỉ ra một khoảng giá trị truy cập. Ví dụ, để truy cập đến các phần tử của cột thứ 2 nằm trên
3 hàng đầu của ma trận A:
A(1:3,2)
ans =
2
11
7
Nếu dấu (:) đứng riêng lẻ, MATLAB sẽ truy cập đến tất cả các phần tử của kích thước đó. Ví dụ, truy cập
đến tất cả các cột của hàng thứ 3 của ma trận A:
A(3,:)
ans = 9 7 6 12 0
Dấu (:) cũng có thể được sử dụng để tạo các vecto gồm các phần tử cách đều, theo cấu trúc start:step:end, ví
dụ:
B = 0:10:100
B = 0 10 20 30 40 50 60 70 80 90 100
Nếu step không được xác định thì MATLAB sẽ gán cho step giá trị mặc định bằng 1
10
Các biến và Workspace
Workspace là không gian chứa các biến được tạo ra trong MATLAB hay import vào MATLAB từ các file
dữ liệu hay các chương trình khác. Ví dụ, các dòng lệnh sau sẽ tạo ra hai biến A và B trong Workspace:
A = magic(4);
B = rand(3,5,2);
Danh mục các biến của Workspace có thể được xem bằng lệnh whos.
whos
Name Size Bytes Class Attributes
A 4x4 128 double
B 3x5x2 192 double
Các biến cũng sẽ được liệt kê trong khung Workspace của cửa sổ chương trình:
Các biến của Workspace sẽ không được tự động lưu lại sau khi thoát khỏi chương trình. Để lưu lại dữ liệu
cho các lần sử dụng tiếp theo, sử dụng lệnh save
save myfile.mat
Câu lệnh trên sẽ lưu toàn bộ Workspace hiện tại thành một .MAT file.
Để xóa toàn bộ các biến trong Workspace, sử dụng lệnh clear.
Để gọi lại các biến đã lưu trong .MAT file, sử dụng lệnh load.
load myfile.mat
11
Chuỗi kí tự
Chuỗi kí tự là một dãy gồm các kí tự bất kì nằm trong dấu ngoặc đơn (‘’). Có thể gán một chuỗi kí tự cho giá
trị của một biến.
myText = 'Hello, world';
Sử dụng dấu ngoặc kép để thể hiện dấu ngoặc đơn trong chuỗi kí tự.
otherText = 'You''re right'
otherText = You're right
myText và otherText là các mảng, giống như mọi biến khác của MATLAB. Loại dữ liệu của chuỗi kí tự là
char, dạng viết gọn cho ‘character’.
whos myText
Name Size Bytes Class Attributes
myText 1x12 24 char
Có thể nối ghép các chuỗi kí tự bằng toán tử [] tương tự như với mảng thông thường.
longText = [myText,' - ',otherText]
longText = Hello, world - You're right
Để chuyển đổi các giá trị số thành chuỗi kí tự, sử dụng các hàm có sẵn trong MATLAB, ví dụ num2str,
int2str
f = 71;
c = (f-32)/1.8;
tempText = ['Temperature is ',num2str(c),'C']
tempText =Temperature is 21.6667C
12
Function
MATLAB cung cấp một lượng lớn các Function (hàm lệnh) có sẵn để thực hiện các tính toán hoặc nhu cầu
phổ biến của người dùng. Danh sách và mô tả của các Function của MATLAB có thể xem tại địa chỉ.
Khi đã biết tên gọi của một Funnction, có thể truy cập phần Help mô tả Function đó từ Command
Window bằng câu lệnh Help functionname
Ví dụ, giả sử ta có hai ma trận A và B
A = [1 3 5];
B = [10 6 4];
Khi gọi một Function, các biến input sẽ được đặt trong dấu ngoặc tròn ():
max(A);
Nếu có nhiều input thì chúng sẽ được ngăn cách bởi dấu phẩy (,)
max(A,B);
Giá trị output của một Function có thể được gán cho một biến khác:
maxA = max(A);
Khi có nhiều giá trị output, chúng sẽ được ngăn cách bởi dấu phẩy (,) và đặt trong ngoặc vuông []:
[maxA,location] = max(A);
Các biến input dạng chuỗi kí tự được đặt trong dấu ngoặc đơn (‘’)
disp('hello world');
Để gọi một Function không có biến input và không trả lại các giá trị output, chỉ cần nhập tên của Function
clc
Function clc sẽ xóa và trả lại Command Window trống.
13
Vẽ hình 2-D và 3-D
Vẽ hình 2-D
Để vẽ các đường 2-D, sử dụng lệnh plot. Ví dụ, để vẽ đồ thị hàm sin trong khoảng [0, 2π]:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
Có thể dán nhãn cho các trục tọa độ và đặt tên cho đồ thị
xlabel('x')
ylabel('sin(x)')
title('Plot of the Sine Function')
14
Có thể thay đổi các thiết lập cho đồ thị bằng cách nhập thêm các giá trị định dạng cho đồ thị. Ví dụ câu lệnh
sau sẽ cho đồ thị là đường màu đỏ gạch rời.
plot(x,y,'r--')
Chuỗi 'r--' là chuỗi định dạng của đồ thị. Mỗi chuỗi định dạng có thể bao gồm các giá trị về màu sắc, loại
đường, và loại điểm đánh dấu. Điểm đánh dấu là những điểm sẽ được đánh dấu trên các đồ thị bằng các kí
hiệu như +, o hay *. Ví dụ ‘g:*’ sẽ là định dạng của một đường màu xanh nét chấm với các điểm đánh dấu
dạng *
Chú ý rằng tên đồ thị và nhãn của các trục tọa độ được đặt cho đồ thị thứ nhất sẽ không xuất hiện trong đồ
thị tiếp theo. Một cách mặc định, MATLAB sẽ xóa các đồ thị cũ khi một lệnh plot mới được gọi, đồng thời
khởi tạo lại các trục tọa độ cũng như các yếu tố khác cho đồ thị mới.
Để vẽ thêm các đường mới vào đồ thị đã có, sử dụng lệnh hold
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
hold on
y2 = cos(x);
plot(x,y2,'r:')
legend('sin','cos')
15
Cho đến khi có lệnh hold off, tất cả các đường được vẽ sẽ cùng hiển thị trong đồ thị hiện thời.
Vẽ hình 3-D
Một đồ thị 3-D cơ bản là một mặt biều thị cho một hàm 2 biến z = f (x,y).
Để tính z, đầu tiên ta tạo một tập các điểm tọa độ (x,y) bằng lệnh meshgrid
[X,Y] = meshgrid(-2:.2:2);
Z = X .* exp(-X.^2 - Y.^2);
Sau đó vẽ mặt bằng lệnh surf
surf(X,Y,Z)
Hai lệnh vẽ hình 3-D cơ bản là surf và mesh. Trong khi surf tô màu cả các đường và các ô của mặt thì mesh
chỉ tô màu các đường và cho kết quả hình vẽ dạng khung.
16
Vẽ đồ thị con
Có thể vẽ được nhiều đồ thị trong các miền con của một hình vẽ bằng cách sử dụng lệnh subplot.
Ví dụ, đoạn lệnh sau sẽ vẽ 4 đồ thị trong một khung hình được chia làm 4 miền con:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));
subplot(2,2,1); mesh(X); title('X');
subplot(2,2,2); mesh(Y); title('Y');
subplot(2,2,3); mesh(Z); title('Z');
subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');
Hai giá trị đầu trong các input của subplot chỉ kích thước theo hai chiều ngang dọc của khung hình. Giá trị
thứ ba chỉ ra miền con sẽ được sử dụng để vẽ đồ thị.
17
Script
Một chương trình MATLAB đơn giản nhất được gọi là một tập lệnh (Script). Script là một .M file với nội
dung là một chuỗi các dòng lệnh gán biến và gọi hàm của MATLAB. Thực thi một Script bằng cách nhập
tên của nó vào dòng lệnh.
Ví dụ về Script
Để tạo một Script mới, dùng lệnh edit
edit plotrand
Câu lệnh trên sẽ tạo ra một file trống có tên plotrand.m. Nhập một số dòng lệnh đơn giản vẽ một vecto
nhận các giá trị ngẫu nhiên
n = 50;
r = rand(n,1);
plot(r)
Sau đó, thêm các dòng lệnh vẽ đường nằm ngang đi qua giá trị trung bình:
m = mean(r);
hold on
plot([0,n],[m,m])
hold off
title('Mean of Random Uniform Data')
Một điều nên làm trong khi viết code là thêm các dòng chú thích để mô tả các phần chương trình được viết.
Các dòng chú thích được bắt đầu bằng dấu %.
% Generate random data from a uniform distribution
% and calculate the mean. Plot the data and the mean.
n = 50; % 50 data points
r = rand(n,1);
plot(r)
% Draw a line from (0,m) to (n,m)
m = mean(r);
hold on
plot([0,n],[m,m])
hold off
title('Mean of Random Uniform
Lưu Script trong Folder hiện thời. Đ
plotrand
Cách khác để chạy một Script là click nút
Vòng lặp và các câu lệnh có điều kiệ
Trong một Script có thể có các vòng l
Ví dụ, tạo một Script có tên calcmaen.m
giá trị trung bình của các lần tính toán.
nsamples = 5;
npoints = 50;
for k = 1:nsamples
currentData = rand(npoints,1);
sampleMean(k) = mean(currentData);
end
overallMean = mean(sampleMean)
Bây giờ, thay đổi các câu lệnh bằng cách bỏ đ ấ ố ệ
trung bình sau mỗi lần tính toán trong vòng l
tự của lần tính toán.
for k = 1:nsamples
iterationString = ['Iteration #'
disp(iterationString)
currentData = rand(npoints,1);
sampleMean(k) = mean(currentData)
18
Data')
ể gọi một Script, chỉ cần nhập tên của nó vào dòng l
Run trong cửa sổ Editor.
n
ặp và khối lệnh có điều kiện như for, if, và s
để tính giá trị trung bình của 5 giá trị ngẫ
i d u (;) cu i câu l nh tính sampleMean
ặp, đồng thời hiển thị trong cửa sổ Command
,int2str(k)];
ệnh.
witch.
u nhiên, rồi sau đó tính
để hiển thị các giá trị
Window số thứ
19
end
overallMean = mean(sampleMean)
Với thay đổi này, khi gọi Script calcmean, kết quả sẽ hiển thi như bên dưới.
calcmean
Iteration #1
sampleMean = 0.3988
Iteration #2
sampleMean = 0.3988 0.4950
Iteration #3
sampleMean = 0.3988 0.4950 0.5365
Iteration #4
sampleMean = 0.3988 0.4950 0.5365 0.4870
Iteration #5
sampleMean = 0.3988 0.4950 0.5365 0.4870 0.5501
overallMean = 0.4935
Sửa đổi thêm Script: Trong cửa sổ Editor, thêm vào đoạn lệnh có điều kiện ở cuối caclmean.m để hiển thị
thông báo về sự sai khác của giá trị overallMean:
if overallMean < .49
disp('Mean is less than expected')
elseif overallMean > .51
disp('Mean is greater than expected')
else
disp('Mean is within the expected range')
end
Gọi caclmean để xem kết quả của đoạn lệnh vừa bổ sung:
overallMean = 0.5178
Mean is greater than expected
Địa chỉ của Script
20
MATLAB sẽ chỉ truy cập được các Script hay các dữ liệu khác ở một khu vực được chỉ định của ổ cứng. Để
gọi một Script thì.M file của Script đó phải nằm trong Folder hiện hành (được hiển thị trong khu vực
Current Directory của màn hình).
Có thể thay đổi Folder hiện hành của MATLAB bằng cách Browse đến Folder mới từ khu vực Current
Directory.
21
Help
Tất cả các Function có sẵn của MATLAB đểu hỗ trợ phần mô tả và hướng dẫn sử dụng đơn giản về cú
pháp, input và output. Có hai cách cơ bản để truy cập và phần Help của một Function:
• Mở phần Help của Function bằng một cửa sổ mới bằng lệnh doc
doc mean
• Để xem hướng dẫn ngắn gọn của Function ngay trong cửa sổ Command Window, dùng lệnh help
help mean
Để xem toàn bộ phần Help của MATLAB, click vào tab Help từ Main Menu
File đính kèm:
Bắt đầu với MATLAB.pdf

