我试图在MATLAB中模拟一个实时绘图,以显示心电信号。我正试图用一个小数据集来检验我的想法。我创建了一个名为Y的矩阵,包含从0到25*pi的值,并希望绘制sin(Y),每个数据点都被绘制成实时的。这是我写的代码:
Y= [0:0.1:25*pi];
X = sin(Y);
[a,b] = size(Y);
for i = 1:b
hold on;
line(i,X(i));
drawnow;
pause(0.01);
end
这种方法效果很好,生成的图形在"实时"中移动,但是由于数据集的离散性,它绘制了单个点而不是平滑线。我想知道是否有一种方法将当前的图形输出转换成类似于光滑线形图的东西?提前感谢您对这个问题的帮助。
try do
plot(1:i,X(1:i));
代替
line(i,X(i));
编辑:你不需要做hold on;
尝试用plot代替line。例如,
plot(1:i, X(1:i), 'k-x');
用交叉标记绘制黑色实线。
这可能很慢,因为图形是一遍又一遍地绘制的。对于hold on
,可以只绘制最后一个线段:
plot(i-1:i, X(i-1:i), 'k-x');