改进Matlab图形性能

时间:2017-03-07 13:38:38

标签: matlab matlab-figure matlab-guide graphing

我正在使用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

0 个答案:

没有答案