我正在使用Matlab 2014b通过与arduino的串行连接接口,并且我试图提高图形的性能,因为它对于显示我需要的采样率来说太慢了。 我正在绘制来自3个独立传感器的输入,需要在GUI中自己的图形上显示它们。我只绘制了最近500点的图表来尝试减少与绘制大量点数相关的速度问题。我已经使用了tic toc函数来找到瓶颈的位置,它特别出现在绘图代码中。以下是我到目前为止的情况。我需要进行采样理想情况下每秒100个样本,但更糟糕的情况是50可以工作。
state=get(hObject, 'Value');
if state==1
global stop_state;
stop_state = 0;
pause(1);
stop_state = 1;
cla;
while_length = 1000;
count = 1;
i = 1;
flushinput(handles.s7);
while count <= while_length
t = tic;
t1 = tic;
data = fscanf(handles.s7);
[S1 S2 S3] = strread(data, '%d %d %d','delimiter',', ');
S1_data(i) = S1;
S2_data(i) = S2;
S3_data(i) = S3;
if i<=100
d_S1 = (1:i);
else
d_S1 = (i-100:i);
end
drawnow();
axes(handles.axes1);
xlabel('time');
ylabel('Presure (mmHg)');
plot(d_S1,S1_data(d_S1),'b*');
axes(handles.axes2);
xlabel('time');
ylabel('Presure (mmHg)');
plot(d_S1,S2_data(d_S1),'b*');
axes(handles.axes3);
xlabel('time');
ylabel('Presure (mmHg)');
plot(d_S1,S3_data(d_S1),'b*');
i = i + 1;
count = count + 1;
time = toc(t1);
disp(time);
disp(t2);
if stop_state == 0
break;
end
end
time1 = toc(t2);
end