Kỹ Thuật - Công Nghệ - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin Bài giảng Matlab Present by Nguyễn Trung Nhân Chương 4: VẼ ĐỒ THỊ TRONG MATLAB 4.1. Đồ thị 2 chiều 4.1.1. Hàm plot Cú pháp: Plot (x, y) Nếy x, y là 2 số thực, hàm plot sẽ vẽ một điểm trên mặt Oxy phẳng có tọa độ là (x,y) Nếu x, y là 2 vectơ, hàm plot vẽ một đường nối tập hợp các điểm có tọa độ (xi, yi) Ví dụ 4.1: Vẽ đồ thị điện áp v=2202 cos(100πt) trong 5 chu kỳ. Ta có thể tạo một file hoặc đánh trực tiếp các lệnh từ cửa sổ Command Window Tu ham so da cho tya xac dinh duoc f=50 Hz f=50; T=1f; t=0:T1000:5T; Tao buoc ve cho ham so U=220sqrt(2)sin(2pift); plot(t,U) Kết quả: 4.1.2. Định dạng cho đồ thị 1. Đặt tên trục Cú pháp: xlabel(‘text’) Đặt tên cho trục x Cú pháp: ylabel(‘text’) Đặt tên cho trục y Cú pháp: title(‘text’) Đặt tên cho đồ thị Ví dụ 4.2: Với ví dụ 4.1; ta gắng tên cho các trục và đồ thị như sau: Tu ham so da cho tya xac dinh duoc f=50 Hz f=50; T=1f; Bài giảng Matlab Present by Nguyễn Trung Nhân t=0:T1000:5T; Tao buoc ve cho ham so U=220sqrt(2)sin(2pift); plot(t,U) xlabel(''''Thoi gian, s'''') ylabel(''''Dien ap, V'''') title(''''Dang song dien ap xoay chieu tan so 50 Hz'''') Kết quả: 2. Đặt giới hạn cho 2 trục Cú pháp: axis(xmin xmax ymin ymax) Trục x và y sẽ được hiển thị các giá trị từ xmin đến xmax, ymin đến ymax. Muốn thay đổi các điểm vạch chia trên 2 trục Ox và Oy, ta sử dụng hàm: set(gca,’Xtick’,a:Δ:b) set(gca,’Ytick’,a:Δ:b) Trục x hoặc y sẽ được chia thành các khoảng giữa 2 giá trị a và b với số gia là Δ Hàm grid sẽ được sử dụng để tạo lưới hoặc bỏ lưới bên trong nền đồ thị grid on Tạo lưới grid off Bỏ lưới Ví dụ 4.3: Với ví dụ 4.2; định dạng thêm độ chia trục và lưới như sau Tu ham so da cho tya xac dinh duoc f=50 Hz f=50; T=1f; t=0:T1000:5T; Tao buoc ve cho ham so U=220sqrt(2)sin(2pift); Bài giảng Matlab Present by Nguyễn Trung Nhân plot(t,U) xlabel(''''Thoi gian, s'''') ylabel(''''Dien ap, V'''') title(''''Dang song dien ap xoay chieu tan so 50 Hz'''') axis(0 0.1 -400 400); set(gca,''''xtick'''',0:0.02:0.1); set(gca,''''yTick'''',-400:50:400); grid on Kết quả 3. Đặt chú thích cho đồ thị Cú pháp: text(x,y,''''string'''') Đặt đoạn text tại điểm có toạ độ (x,y) Cú pháp: gtext(''''string'''') Đặt đoạn text tại một điểm tuỳ ý trên đồ thị bằng cách click chuột trái chuột. Ví dụ 4.4 :Đặt chú thích cho đồ thị của ví dụ 4.3 Tu ham so da cho tya xac dinh duoc f=50 Hz f=50; T=1f; t=0:T1000:5T; Tao buoc ve cho ham so U=220sqrt(2)sin(2pift); plot(t,U) xlabel(''''Thoi gian, s'''') ylabel(''''Dien ap, V'''') title(''''Dang song dien ap xoay chieu tan so 50 Hz'''') axis(0 0.1 -400 400); set(gca,''''xtick'''',0:0.02:0.1); set(gca,''''yTick'''',-400:50:400); grid on Bài giảng Matlab Present by Nguyễn Trung Nhân text(0.04,325,''''u=220sqrt(2)sin(314t)'''') gtext(''''u=220sqrt(2)sin(314t)'''') 4.1.3. Vẽ nhiều đồ thị Để vẽ nhiều đồ thị, chúng ta sử dụng hàm plot với cú pháp sau: Plot(t,x1 ,t,x2,t,x3,...,t,xn) Matlab sẽ vẽ các đường xi theo t trên cùng một một hệ trục tọa độ. Chúng ta cũng có thể sử dụng lệnh hold để lưu giữ đồ thị hiện hữu, khi chúng ta thực hiện lệnh vẽ tiế p theo thì đồ thị mới sẽ được thêm vào đồ thị cũ. Ví dụ 4.5:Sử dụng hàm plot vẽ đồ thị hệ thống điện áp 3 pha đối xứng. Cách 1: không dùng lệnh hold f=50; T=1f; t=0:T1000:3T; Tao buoc ve cho ham so va=220sqrt(2)sin(2pift); pha a co goc phan ban dau bang 0 vb=220sqrt(2)sin(2pift+120pi180); pha b vc=220sqrt(2)sin(2pift-120pi180); pha c plot(t,va,t,vb,t,vc); xlabel(''''Thoi gian, s'''') ylabel(''''Dien ap, V'''') title(''''Dang song dien ap xoay chieu ba pha tan so 50 Hz'''') axis(0 0.06 -400 400); set(gca,''''xtick'''',0:0.02:0.06); set(gca,''''yTick'''',-400:50:400); grid on Bài giảng Matlab Present by Nguyễn Trung Nhân text(0.005,325,''''Va''''); text(0.01,325,''''Vc''''); text(0.017,325,''''Vb''''); Cách 2: dùng lệnh hold f=50; T=1f; t=0:T1000:3T; Tao buoc ve cho ham so va=220sqrt(2)sin(2pift); pha a co goc phan ban dau bang 0 plot(t,va); hold on -------------- ve pha b vb=220sqrt(2)sin(2pift+120pi180); plot(t,vb); hold on --------------- ve pha c vc=220sqrt(2)sin(2pift-120pi180); plot(t,vc); hold on xlabel(''''Thoi gian, s'''') ylabel(''''Dien ap, V'''') title(''''Dang song dien ap xoay chieu ba pha tan so 50 Hz'''') axis(0 0.06 -400 400); set(gca,''''xtick'''',0:0.02:0.06); set(gca,''''yTick'''',-400:50:400); grid on text(0.005,325,''''Va''''); text(0.01,325,''''Vc''''); text(0.017,325,''''Vb''''); Kết quả: Ngoài ra để vẽ nhiều đồ thị trên cùng một cửa sổ với các hệ trục tọa độ khác nhau chúng ta sử dụng hàm subplot với cú pháp như sau: Bài giảng Matlab Present by Nguyễn Trung Nhân plot(m,n,k) Hàm subplot sẽ chia cữa sổ hình vẽ ra thành m×n khu vực (ô nhỏ - m hàng, n cột) và đồ thị sẽ được vẽ vào ô thứ k. Ví dụ 4.6. Vẽ đồ thị của điện áp, dòng điện, công suất toàn phần, công suất tác dụng , công suất phản kháng của một đoạn mạch xoay chiều trên cùng một màn hình Chuong trinh tinh toan va ve dang song dien ap, dong dien, cong suat theo thoi gian Vm = 250; tetav = 0; Zt=1+j7; Z=abs(Zt); gama=angle(Zt)180pi; tetai = tetav - gama; teta = (tetav - tetai)pi180; Im = VmZ; wt=0:.05:5pi; v=Vmcos(wt); i=Imcos(wt + tetaipi180); p=v.i; V=Vmsqrt(2); I=Imsqrt(2); P = VIcos(teta); Q = VIsin(teta); S = P + jQ pr = P(1 + cos(2(wt + tetav))); px = Qsin(2(wt + tetav)); PP=Pones(1, length(wt)); xline = zeros(1, length(wt)); wt=180piwt; subplot(2,2,1), plot(wt, v, wt, i,wt, xline), grid title(''''v(t)=Vm coswt, i(t)=Im cos(wt +'''', num2str(tetai), '''')'''') xlabel(''''wt, Do'''') subplot(2,2,2), plot(wt, p, wt, xline), grid title(''''S(t)=v(t) i(t)''''), xlabel(''''wt, Do'''') subplot(2,2,3), plot(wt, pr, wt, PP, wt,xline), grid title(''''Pr(t) Pt 2.04''''), xlabel(''''wt, Do'''') subplot(2,2,4), plot(wt, px, wt, xline), grid title(''''Px(t) Pt 2.05''''), xlabel(''''wt, Do'''') Kết quả: Bài giảng Matlab Present by Nguyễn Trung Nhân0 1 2 3 4 5 6 7 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10 1 2 3 4 5 6 7 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10 1 2 3 4 5 6 7 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 4.2. Thuộc tính nét vẽ Cú pháp : plot(X1,Y1,LineSpec,...) Hàm plot có sử dụng thuộc tính nét vẽ LineSpec cho phép thiết lập các thuộ c tính của đồ thị. Các thuộc tính là: Line style: định dạng kiểu nét, ví dụ nét chấm, nét đứt, .... Line width: định dạng độ rộng nét vẽ, đơn vị là point Color: định dạng màu của nét vẽ, ví dụ mà...
Trang 1Chương 4: VẼ ĐỒ THỊ TRONG MATLAB
4.1 Đồ thị 2 chiều
4.1.1 Hàm plot
Cú pháp: Plot (x, y)
Nếy x, y là 2 số thực, hàm plot sẽ vẽ một điểm trên mặt Oxy phẳng có tọa độ là (x,y) Nếu x, y là 2 vectơ, hàm plot vẽ một đường nối tập hợp các điểm có tọa độ (xi, yi)
Ví dụ 4.1:
Vẽ đồ thị điện áp v=220* 2 *cos(100*π*t) trong 5 chu kỳ
Ta có thể tạo một file hoặc đánh trực tiếp các lệnh từ cửa sổ Command Window
% Tu ham so da cho tya xac dinh duoc f=50 Hz
f=50;
T=1/f;
U=220*sqrt(2)*sin(2*pi*f*t);
plot(t,U)
Kết quả:
4.1.2 Định dạng cho đồ thị
1 Đặt tên trục
Cú pháp: xlabel(‘text’) Đặt tên cho trục x
Cú pháp: ylabel(‘text’) Đặt tên cho trục y
Cú pháp: title(‘text’) Đặt tên cho đồ thị
Ví dụ 4.2:
Với ví dụ 4.1; ta gắng tên cho các trục và đồ thị như sau:
% Tu ham so da cho tya xac dinh duoc f=50 Hz
f=50;
T=1/f;
Trang 2t=0:T/1000:5*T; % Tao buoc ve cho ham so
U=220*sqrt(2)*sin(2*pi*f*t);
plot(t,U)
Kết quả:
2 Đặt giới hạn cho 2 trục
Cú pháp: axis([xmin xmax ymin ymax])
Trục x và y sẽ được hiển thị các giá trị từ xmin đến xmax, ymin đến ymax
Muốn thay đổi các điểm vạch chia trên 2 trục Ox và Oy, ta sử dụng hàm:
set(gca,’Xtick’,a:Δ:b) set(gca,’Ytick’,a:Δ:b) Trục x hoặc y sẽ được chia thành các khoảng giữa 2 giá trị a và b với số gia là Δ
Hàm grid sẽ được sử dụng để tạo lưới hoặc bỏ lưới bên trong nền đồ thị
grid on % Tạo lưới
grid off % Bỏ lưới
Ví dụ 4.3 :
Với ví dụ 4.2; định dạng thêm độ chia trục và lưới như sau
% Tu ham so da cho tya xac dinh duoc f=50 Hz
f=50;
T=1/f;
U=220*sqrt(2)*sin(2*pi*f*t);
Trang 3axis([0 0.1 -400 400]);
Kết quả
3 Đặt chú thích cho đồ thị
Cú pháp: text(x,y,'string') % Đặt đoạn text tại điểm có toạ độ (x,y)
Cú pháp: gtext('string') % Đặt đoạn text tại một điểm tuỳ ý trên đồ thị
bằng cách click chuột trái chuột
Ví dụ 4.4 :Đặt chú thích cho đồ thị của ví dụ 4.3
% Tu ham so da cho tya xac dinh duoc f=50 Hz
f=50;
T=1/f;
U=220*sqrt(2)*sin(2*pi*f*t);
plot(t,U)
axis([0 0.1 -400 400]);
Trang 4%gtext('u=220*sqrt(2)*sin(314t)')
4.1.3 Vẽ nhiều đồ thị
Để vẽ nhiều đồ thị, chúng ta sử dụng hàm plot với cú pháp sau:
Plot(t,x1 ,t,x2,t,x3, ,t,xn)
Matlab sẽ vẽ các đường xi theo t trên cùng một một hệ trục tọa độ Chúng ta cũng có thể
sử dụng lệnh hold để lưu giữ đồ thị hiện hữu, khi chúng ta thực hiện lệnh vẽ tiếp theo
thì đồ thị mới sẽ được thêm vào đồ thị cũ
Ví dụ 4.5:Sử dụng hàm plot vẽ đồ thị hệ thống điện áp 3 pha đối xứng
Cách 1: không dùng lệnh hold
f=50;
T=1/f;
plot(t,va,t,vb,t,vc);
axis([0 0.06 -400 400]);
Trang 5Cách 2: dùng lệnh hold
f=50;
T=1/f;
plot(t,va);
% - ve pha b
vb=220*sqrt(2)*sin(2*pi*f*t+120*pi/180);
plot(t,vb);
% - ve pha c
vc=220*sqrt(2)*sin(2*pi*f*t-120*pi/180);
plot(t,vc);
axis([0 0.06 -400 400]);
Kết quả:
Ngoài ra để vẽ nhiều đồ thị trên cùng một cửa sổ với các hệ trục tọa độ khác nhau chúng
ta sử dụng hàm subplot với cú pháp như sau:
Trang 6plot(m,n,k)
Hàm subplot sẽ chia cữa sổ hình vẽ ra thành m×n khu vực (ô nhỏ - m hàng, n cột) và đồ thị sẽ được vẽ vào ô thứ k
Ví dụ 4.6 Vẽ đồ thị của điện áp, dòng điện, công suất toàn phần, công suất tác dụng,
công suất phản kháng của một đoạn mạch xoay chiều trên cùng một màn hình
% Chuong trinh tinh toan va ve dang song dien ap, dong dien, cong suat theo
% thoi gian
Vm = 250; tetav = 0;
Zt=1+j*7;
Z=abs(Zt);
gama=angle(Zt)*180/pi;
tetai = tetav - gama;
teta = (tetav - tetai)*pi/180;
Im = Vm/Z;
wt=0:.05:5*pi;
v=Vm*cos(wt);
i=Im*cos(wt + tetai*pi/180);
p=v.*i;
V=Vm/sqrt(2); I=Im/sqrt(2);
P = V*I*cos(teta);
Q = V*I*sin(teta);
S = P + j*Q
pr = P*(1 + cos(2*(wt + tetav)));
px = Q*sin(2*(wt + tetav));
PP=P*ones(1, length(wt)); xline = zeros(1, length(wt));
wt=180/pi*wt;
subplot(2,2,1), plot(wt, v, wt, i,wt, xline), grid
subplot(2,2,2), plot(wt, p, wt, xline), grid
subplot(2,2,3), plot(wt, pr, wt, PP, wt,xline), grid
subplot(2,2,4), plot(wt, px, wt, xline), grid
Kết quả:
Trang 70 1 2 3 4 5 6 7 -1
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
4.2 Thuộc tính nét vẽ
Cú pháp : plot(X1,Y1,LineSpec, )
Hàm plot có sử dụng thuộc tính nét vẽ LineSpec cho phép thiết lập các thuộc tính của đồ thị Các thuộc tính là:
Line style: định dạng kiểu nét, ví dụ nét chấm, nét đứt,
Line width: định dạng độ rộng nét vẽ, đơn vị là point
Color: định dạng màu của nét vẽ, ví dụ màu xanh, đỏ,
Marker type: định dạng điểm vẽ
Bảng tổng hợp và ví dụ đi kèm như sau:
Lọai nét vẽ
- : nét liền
: nét đứt
: : nét chấm
- : nét chấm gạch
t = 0:pi/20:2*pi;
Màu nét vẽ
r: đỏ
y: vàng
w: trắng
b: xanh nước biển
k: đen
t = 0:pi/20:2*pi;
Độ lớn nét vẽ
- Tính theo đơn vị
là point
t = 0:pi/20:2*pi;
r','LineWidth',5 )
Trang 80 1 2 3 4 5 6 7 -1
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Marker
+ : dấu cộng
o : vòng tròn
* : hoa thị
x : chữ x
t = 0:pi/20:2*pi;
'LineWidth',2 )
4.3 Các hàm vẽ đồ thị khác
4.3.1 Hàm bar
Cú pháp: bar(x,y)
Hàm bar sẽ vẽ các thanh đứng có độ cao là yi tương ứng tại vị trí xi
Ví dụ 4.7:
Vẽ đồ thị phụ tải của một xí nghiệp theo số liệu sau:
Điện năng
(kWh)
150 250 300 500 700 800 850 900 1000 650 600 500
x=[1 2 3 4 5 6 7 8 9 10 11 12]
y=[150 250 300 500 700 800 850 900 1000 650 600 500]
bar(x,y)
Kết quả
Trang 94.3.2 Hàm pie
Cú pháp: pie(X)
Hàm pie sẽ vẽ đồ thị dạng quạt với diện tích tỉ lệ với phần trăm
Ví dụ 4.8: Vẽ biểu đồ xác định phần trăm điện năng tiêu thụ trong hàng tháng được tính
toán theo giờ cao điểm, thấp điểm và trung bình của một xí nghiệp với số liệu như sau:
Điện năng Cao điểm Thấp điểm Trung bình
Điện năng-kWh 17000 25000 65000
x=[17000 25000 65000]
pie(x)
Kết quả:
4.3.3 Vẽ đồ thị hàm số theo tỉ lệ logarit
Cú pháp: loglog(x,y)
Vẽ các giá trị x và y tương ứng trên các trục dùng tỉ lệ logarit
Cú pháp: semilogx(x,y)
Vẽ các giá trị x và y tương ứng trên các trục x theo tỉ lệ logarit, trục y theo tỉ lệ tuyến tính
Ví dụ 4.9: Khảo sát giá trị tổng trở Z của mạch RLC nối tiếp trong miền tần số từ 10Hz
đến 10000 Hz Cho R = 10, L =10mH, C =10μF
R=10 L=10e-3 C=10e-6 k=0
k=k+1;
f(k)=t;
w(k)=2*pi*f(k);
Z(k)=sqrt(R*R+(w(k)*L-1/(w(k)*C))^2);
end
semilogx(f,Z)
%loglog(f,Z)
Trang 10Kết quả
Bài tập áp dụng
BT4.1
%Chuong trinh tinh day dong dien, cong suat, tren nhanh day
k=length(a1);
V1=E1.*cos(a1r) + j*E1.*sin(a1r);
V2=E2.*cos(a2r) + j*E2.*sin(a2r);
tam1=(V1 - V2)/Z; I21=-I12;
I12 = (V1 - V2)/Z; I21=-I12;
S1= V1.*conj(I12); P1 = real(S1); Q1 = imag(S1);
S2= V2.*conj(I21); P2 = real(S2); Q2 = imag(S2);
SL= S1+S2; PL = real(SL); QL = imag(SL);
Result1=[a1, P1, P2, PL];
disp(Result1)
plot(a1, P1, a1, P2, a1, PL), grid
BT4.2
%Chuong trinh tinh day dong dien, cong suat, tren nhanh day
Trang 11a2=input('Goc pha dien ap nguon 2 = ');
k=length(a1);
V1=E1.*cos(a1r) + j*E1.*sin(a1r);
V2=E2.*cos(a2r) + j*E2.*sin(a2r);
tam1=(V1 - V2)/Z; I21=-I12;
I12 = (V1 - V2)/Z; I21=-I12;
S1= V1.*conj(I12); P1 = real(S1); Q1 = imag(S1);
S2= V2.*conj(I21); P2 = real(S2); Q2 = imag(S2);
SL= S1+S2; PL = real(SL); QL = imag(SL);
Result1=[a1, P1, P2, PL];
disp(Result1)
plot(a1, P1, a1, P2, a1, PL), grid
BT4.3
%Chuong trinh khao sat va ve do thi cua may phat dien dong bo
Xd=7.5; Xq = 3.5; Zs = Xd + j*Xq;
S = 100*0.78 + j*(100*sqrt(1-0.78*0.78)); V = 18/sqrt(3);
Ia1 = conj(S)*1000/(3*conj(V));
Ia1M = abs(Ia1)/1000, Ia1ang=angle(Ia1)*180/pi;
delta=atan((Xq*Ia1M*0.78)/(V+Xq*Ia1M*sqrt(1-0.78*0.78)));
deltado=delta*180/pi
tam1=100*0.78-3*(V^2)*((Xd-Xq)/(2*Xd*Xq))*sin(2*delta);
Em=(tam1*Xd)/(3*V*sin(delta))
%===== VE DO THI=============
nhap1=3*(Em*V)/Xd;
nhap2=3*(V^2)*(Xd-Xq)/(2*Xd*Xq);
wt=0:.001:pi;
thu3=nhap1*sin(wt);
thu4=nhap2*sin(2*wt);
p=thu3+thu4;
wt=180/pi*wt;
plot(wt, p), grid xlabel('wt, Do') ylabel('P, MW') Pmax=max(p) BT4.4 %==== CHUONG TRINH CHO BAI TAP 4.14 ==== clear all; %z = input('Nhap vao tong tro phuc noi tiep tren moi km z = '); %y = input('Nhap vao tong dan phuc tren moi km y = '); %l = input('Nhap vao chieu dai duong day l(km) = '); z = 0.028 + j*.41;
y = 0 + j*4.6/1000000; Length = 350;
VR3ph = 500;
z = 0.04 + j*.39; y = j*4.2/1000000; Length = 300;
gamma = sqrt(z*y); Zc = sqrt(z/y);
A = cosh(gamma*Length); B = Zc*sinh(gamma*Length);
C = 1/Zc * sinh(gamma*Length); D = A;
ABCD = [A B; C D]
Znew = Zc * sinh(gamma*Length)
Trang 12Ynew = 2/Zc * tanh(gamma*Length/2)
Anew = 1 + Znew*Ynew/2; Bnew = Znew;
Cnew = Ynew*(1 + Znew*Ynew/4); Dnew = Anew;
%gamma = sqrt(z*y); Zc = sqrt(z/y);
%Z = Zc * sinh(gamma*l)
%Y = 2/Zc * tanh(gamma*l/2)
%A = cosh(gamma*l); B = Zc*sinh(gamma*l);
%C = 1/Zc * sinh(gamma*l); D = A;
ABCD = [Anew Bnew; Cnew Dnew]
AR = acos(0.8);
%disp('(a)')
Vs = VsIs(1);
hstt=((real(SR))/real(Ss))*100;
REG = (Vs3ph/abs(ABCD(1,1)) - VR3ph)/VR3ph *100;