Отображение дискретных данных в виде линейного графика

Я пытаюсь смоделировать график в реальном времени в 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

Это работает хорошо, и результирующий график движется как в «реальном времени», однако из-за дискретного характера набора данных он отображает отдельные точки вместо плавной линии. Мне было интересно, есть ли способ преобразовать текущий вывод графика во что-то, напоминающее график с плавной линией? Заранее благодарим за любую помощь в этом вопросе.


person lindziwiggins    schedule 18.05.2015    source источник


Ответы (2)


попробуй сделать

 plot(1:i,X(1:i)); 

вместо

 line(i,X(i));

Изменить: вам не нужно было бы держаться; этим методом тоже.

person hiandbaii    schedule 18.05.2015

Попробуйте использовать график вместо строки. Например,

plot(1:i, X(1:i), 'k-x');

рисует сплошную черную линию с перекрестными маркерами.

Это может быть довольно медленным, поскольку график строится снова и снова. Вместо этого с hold on можно было бы построить только последний сегмент линии:

plot(i-1:i, X(i-1:i), 'k-x');
person Gnubie    schedule 18.05.2015
comment
Большое спасибо за помощь! - person lindziwiggins; 18.05.2015