You are on page 1of 5

Cách lấy lại số liệu trên Scope trong

Matlab và hiển thị trên đồ thị

Chắc hẳn các bạn làm việc với Matlab - Simulink đã làm quen với khối Scope trong thư
viện Sinks, khối này khi hiển thị mô phỏng với thời gian tương đối dài thì chúng ta khó
lòng thu lại được đường đặc tính của nó. Khi chụp thẳng hình này thì sẽ toàn màu đen,
khi đem in làm báo cáo,.. thì rất khó nhìn.

Với các mô hình Simulink đó, bạn kích đúp chuột vào khối Scope.

Hình 1:Chọn Parameter trên cửa sổ Scope.


Hình 2: chọn tab Data history, Chọn Save data to workspace, chọn kiểu structure with
time vì cần có biến time.

Trong này có nhiều lựa chọn cho biến ở trong khung Format nhưng mình chọn kiểu
Structure để dễ thao tác.

Hình 3: Sau khi chạy mô phỏng xong bạn sẽ thấy cửa sổ Workspace có biến
ScopeData

Như vậy biến ScopeData là một structure nên dùng toán tử truy nhập (.) để truy nhập vào
từng phần tử của nó. Bạn thử dùng lệnh sau để biết tên của các thành phần của biến này:

>>ScopeData
Bạn gõ lệnh sau để vẽ :

>>figure(1);
>>plot(ScopeData.time,ScopeData.signals.values);
>>grid on;

Lưu ý, với phiên bản Matlab R009b cần đổi lệnh plot thành bên dưới. Cảm ơn em
trungkstn đã góp ý cho anh

plot(ScopeData.time,ScopeData.signals.values(:));

Hình 4: Cửa sổ figure 1 hiện ra, kích vào pictools trên thanh công cụ.
Khi cái scope của bạn có nhiều hình trong đó thì mà bạn muốn vẽ từng hình thì bạn làm
như ví dụ sau. Mình có 2 hình trong một scope:

%% Plot speed
figure(1);
x = out.time;
y = out.signals(1).values;
plot(x,y,'k-','LineWidth',2);
title(' Motor speed [Rad/s]','FontSize',12);
xlabel('Time [s]','FontSize', 12);
grid on;

%% Plot torque
figure(2);
x = out.time;
y = out.signals(2).values;
plot(x,y,'k-','LineWidth',2);
title('Amature Current [A]','FontSize',12);
xlabel('Time [s]','FontSize', 12);
grid on;
Hình 5: Các công cụ hiện ra, bạn có thể xào nấu cái plot của mình theo ý muốn rùi
nhé.

You might also like