23/09/2016
MatLab R2013b
1. Cài đặt
2. Các vấn đề cơ bản
3. Mô phỏng bằng Simulink
4. Mô phỏng bằng mã lệnh
1
Cài đặt
Bước 1: Chạy file Setup.exe, chọn Install without using
Internet
Bước 2: Chọn I have the File Installation Key for my license và
nhập key 12345678901112131415.
Bước 3: Khi được hỏi file license, chỉ đến file license.dat trong thư
mục CYGiSO
Bước 4: Copy file dll trong thư mục CYGiSO đè lên file có trong thư
mục cài đặt MatLab (x64 nếu Win 64 bit, x86 nếu Win 32 bit)
2
1
23/09/2016
MatLab R2013b
1. Cài đặt
2. Các vấn đề cơ bản
3. Mô phỏng bằng Simulink
4. Mô phỏng bằng mã lệnh
3
Các tools đã cài đặt
Simulink
Cửa sổ lệnh
4
2
23/09/2016
Chọn New > Graphical User Interface để
tạo giao diện cho chương trình
Chọn Blank GUI
5
Các đối tượng tạo giao diện
Vùng thiết kế
6
3
23/09/2016
Các đối tượng tạo giao diện
7
Push Button:
Edit Text: ô nhập dữ liệu
Radio Button:
Pop-up Menu:
Slider:
Check box:
List Box:
Static Text: hiện văn bản tĩnh.
Axes: trục toạ độ
8
4
23/09/2016
Chọn Tools > Menu Editor để tạo menu
9
10
5
23/09/2016
Tạo menu như sau:
Label
Tag
Label
Tag
File
mnuFile
Exit
mnuExit
Help
mnuHelp
About
mnuAbout
11
Thiết kế giao diện như sau:
Để chọn thuộc tính đối tượng, double-click vào đối
tượng để mở cửa sổ Inspector
12
6
23/09/2016
Các thuộc tính cần chú ý:
String: giá trị hiển thị trên đối tượng.
Tag: tên của đối tượng, dùng để phân biệt với các đối tượng khác.
FontName: tên font của văn bản hiện trên đối tượng.
FontSize: kích thước font.
Unit: đơn vị xác định vị trí đối tượng, nên chọn là normalized.
Value: giá trị của đối tượng, dùng cho các đối tượng Popup-menu, List Box, Radio
Button, Check Box, Slider.
Callback: mã lệnh thực hiện khi tác động lên đối tượng (nên dùng file .m để hiệu
chỉnh mã lệnh)
13
Đối tượng
Nút nhấn
3 Radio Button
Static text
Static text
Slider
Edit text
Edit text
Thông số
String: Convert
Tag: pushbuttonConvert
String: Celcius, Rankine, Kelvin
Value: 1.0, 0.0, 0.0
Tag:
radiobuttonC,
radiobuttonR,
radiobuttonK
String: Fahrenheit degree
String: Celcius degree
Tag: text2
Max: 9032
Min: -459.4
SliderStep: [0.001 0.1]
Tag: SliderDoF
String: 32
Tag: editDoF
String: 0
Tag: editKQ
14
7
23/09/2016
Nhấn Save lưu file: nhận tên vd1
Cửa sổ soạn mã lệnh hiện ra:
15
Dùng Go To chuyển đến các đối tượng mong muốn:
16
8
23/09/2016
function
handles)
pushbuttonConvert_Callback(hObject,
% hObject
handle to pushbuttonConvert (see GCBO)
% eventdata
MATLAB
% handles
GUIDATA)
eventdata,
reserved - to be defined in a future version of
structure
with
handles
and
user
data
(see
doF = str2num(get(handles.editDoF,'String'));
if get(handles.radiobuttonC,'Value') == 1
set(handles.editKQ,'String',num2str((doF-32)*5/9));
elseif get(handles.radiobuttonR,'Value') == 1
set(handles.editKQ,'String',doF+459.7);
else
set(handles.editKQ,'String',(doF-32)*5/9+273.15);
end
17
function radiobuttonC_Callback(hObject, eventdata, handles)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
%
Hint:
radiobuttonC
handle to radiobuttonC (see GCBO)
reserved - to be defined in a future version of
structure
with
get(hObject,'Value')
handles
returns
and
user
toggle
data
state
(see
of
set(handles.radiobuttonK,'Value',0);
set(handles.radiobuttonR,'Value',0);
set(handles.text2,'String','Celcius degree');
18
9
23/09/2016
function radiobuttonR_Callback(hObject, eventdata, handles)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
% Hint:
radiobuttonR
handle to radiobuttonR (see GCBO)
reserved - to be defined in a future version of
structure with handles and user data (see
get(hObject,'Value')
returns
toggle
state
of
set(handles.radiobuttonC,'Value',0);
set(handles.radiobuttonK,'Value',0);
set(handles.text2,'String','Rankine degree');
19
function radiobuttonK_Callback(hObject, eventdata, handles)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
% Hint:
radiobuttonK
handle to radiobuttonK (see GCBO)
reserved - to be defined in a future version of
structure with handles and user data (see
get(hObject,'Value')
returns
toggle
state
of
set(handles.radiobuttonR,'Value',0);
set(handles.radiobuttonC,'Value',0);
set(handles.text2,'String','Kelvin degree');
20
10
23/09/2016
function sliderDoF_Callback(hObject, eventdata, handles)
% hObject
% eventdata
MATLAB
% handles
GUIDATA)
handle to sliderDoF (see GCBO)
reserved - to be defined in a future version of
structure
with
handles
and
user
data
(see
% Hints: get(hObject,'Value') returns position of slider
%
get(hObject,'Min')
determine range of slider
and
get(hObject,'Max')
to
set(handles.editDoF,'String',get(handles.sliderDoF,'Value'));
21
function mnuExit_Callback(hObject, eventdata, handles)
% hObject
handle to mnuExit (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
close
function mnuAbout_Callback(hObject, eventdata, handles)
% hObject
handle to mnuAbout (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
msgbox('Help About','Help','help');
22
11
23/09/2016
MatLab R2013b
1. Cài đặt
2. Các vấn đề cơ bản
3. Mô phỏng bằng Simulink
4. Mô phỏng bằng mã lệnh
23
Simulink
- Cho phép thiết kế dạng sơ đồ khối.
- Bao gồm nhiều thư viện có sẵn: Communication System, DSP
System, Control System …
- Khởi động: gõ lệnh Simulink hay chọn Simulink Library
24
12
23/09/2016
- Cửa sổ Simulink
New Model
Các thư viện
Các thành phần trong thư viện
- Nhấn New Model để tạo cửa sổ thiết kế
25
- Kéo và thả khối Signal Generator (trong thư viện Simulink >
Sources) vào cửa sổ thiết kế
26
13
23/09/2016
- Thêm các khối và nối liên kết như hình
Simulink > Sinks > Scope
Simulink > Signal Routing > Mux
Simulink > Sources > Sine Wave
Simulink > Math Operations >
Product
Ω
Simulink Extras > Additional Sinks
> Power Spectral Density
27
- Double-click vào khối Signal
- Khối Sine Wave
Generator và chọn thông số về
biên độ, tần số
28
14
23/09/2016
- Khối Power Spectral Density
- Vào menu Simulation > Model Configuration Parameters
29
- Chọn các thông số như hình
- Nhấn Run chạy mô phỏng
30
15
23/09/2016
31
Simulink > Sources > Constant
Simulink > Math Operations >
Add
Ω
- Khối Sine Wave: Amplitude = 1
- Khối Constant: Constant Value = 1
32
16
23/09/2016
33
- Dùng công cụ có sẵn trong Simulink
DSP System Toolbox > Sources >
Sine Wave
DSP System Toolbox > Sinks >
Spectrum Analyzer
DSP System Toolbox > Sinks >
Time Scope
Communications System Toolbox >
Modulation > Analog Passband Modulation
34
17
23/09/2016
35
Communications System Toolbox >
Modulation > Analog Passband Modulation
36
18
23/09/2016
37
m
f
u
u: lực kéo của động cơ (ngõ vào của mô hình).
f: lực ma sát.
Phương trình biểu diễn như sau:
mv' = u – bv hay v' = (u – bv)/m
m: khối lượng xe.
v: vận tốc xe (ngõ ra của mô hình).
b: hệ số ma sát.
38
19
23/09/2016
v = v1dt v1 = v'.
Simulink > Continuous > Integrator
Simulink > Math > Gain
v'
bv
v' = (u – bv)/m
u – bv
bv
u
39
Simulink > Sources > Step
40
20
23/09/2016
Mô hình điều khiển vị trí động cơ DC
J = 0.01 (moment quán tính của rotor)
b = 0.1 (hệ số giảm chấn của hệ thống cơ khí)
K = Kt = Ke = 0.01 (hằng số sức điện động)
R = 10 (điện trở dây quấn)
L = 0.5 (hệ số tự cảm)
V: ngõ vào (điện áp đặt trên cuộn dây động cơ)
: ngõ ra (vị trí trục quay)
i: dòng điện chạy trong cuộn dây
41
MatLab R2013b
1. Cài đặt
2. Các vấn đề cơ bản
3. Mô phỏng bằng Simulink
4. Mô phỏng bằng mã lệnh
42
21
23/09/2016
Từ cửa sổ lệnh, gõ edit
f = [1 1];
i = 1;
while(f(i)+f(i+1))<1000
f(i + 2)= f(i) +f(i+1);
i = i + 1;
end
plot(f)
Nhập đoạn mã:
Nhấn Save để lưu
Đặt tên file là fibo:
43
Từ cửa sổ lệnh, gõ fibo
1000
900
800
700
600
500
400
300
200
100
0
0
2
4
6
8
10
12
14
16
- Script file không có đối số.
‐ Dùng khi thi hành một loạt lệnh MATLAB theo một trình tự nhất định
44
22
23/09/2016
function y = tb(x)
%Tinh tri trung binh cua cac phan tu
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
Nhập đoạn mã:
Đặt tên file là tb
Dòng xuất hiện khi gõ lệnh help tb
Một hàm M-file gồm các phần cơ bản sau:
Một dòng định nghĩa hàm: function y = tb(x) gồm từ khoá function, đối số trả về y,
tên hàm tb và đối số vào x.
Thân hàm chứa mã MATLAB.
Tên hàm phải bắt đầu bằng ký tự và cùng tên với file chứa hàm.
Tên hàm là tb thì tên file là tb.m
Từ cửa sổ lệnh, gõ
z = 1:99;
tb(z)
Vẽ đồ thị
ans =
45
50
Giữ hình đã vẽ trước đó
Vẽ đồ thị hàm số y1=sinx.cos2x và hàm số y2=sinx2 trong [0-2π]
x=0:0.01:2*pi;
y1=sin(x).*cos(2*x);
plot(x,y1)
grid on
hold on
y2=sin(x.^2);
plot(x,y2,’k’);
axis([0 4*pi –1.25 1.25])
Định lại trục tọa độ
Thêm các tiêu đề trên trục tọa độ
xlabel('Time’)
ylabel(‘Amplitude’)
title(‘y1=sinx.cos2x and y2=sin(x^2)’)
legend(‘sinx.cos2x’,’sinx^2’)
46
23
23/09/2016
y1=sinx.cos2x and y2=sin(x 2)
sinx.cos2x
1
sinx 2
Amplitude
0.5
0
-0.5
-1
0
2
4
6
Time
8
10
12
47
Dùng hàm subplot để vẽ nhiều trục toạ độ
subplot(2,3,5) %2,3: xác định có 2 hàng, 3 cột
% 5: chọn trục thứ 5 (đếm từ trái sang phải,
trên xuống dưới)
48
24
23/09/2016
x=0:0.01:2*pi;
y1=sin(x).*cos(2*x);
subplot(2,1,1)
plot(x,y1)
xlabel('Time');
ylabel('Amplitude');
title('sinx.cos(2x)');
y2=sin(x.^2);
subplot(2,1,2);
plot(x,y2,'k');
xlabel('Time');
ylabel('Amplitude');
title('sinx^2');
sinx.cos(2x)
1
Amplitude
0.5
0
-0.5
-1
0
1
2
3
4
5
6
7
4
5
6
7
Time
sinx 2
1
Amplitude
0.5
0
-0.5
-1
0
1
2
3
49
Time
Có thể thêm văn bản vào bất kỳ chỗ nào trên hình vẽ nhờ hàm text.
text(300,.25*exp(‐.005*300),’\bullet\leftarrow\fontname
{times}0.25{\ite}^(‐0.005{\itt}}
at,{\itt}=300’,ʹFontSize’,14)
Để thêm các công thức toán học, ta dùng dạng LaTeX
Biên dịch dạng latex
text('units','inch','position',[.2 5], 'fontsize',14,
'interpreter', 'latex', 'string' ,['$$\hbox {magic(3) is }
\left( {\matrix{ 8 & 1 & 6 \cr' '3 & 5 & 7 \cr 4 & 9 & 2 } }
\right)$$']);
50
25