在Matlab中仅使用水平和垂直连接绘制数据

时间:2015-04-16 16:33:07

标签: matlab plot matlab-figure

我得到了什么

我在慢跑期间获得了两个瞬时步频的数据源:

  • 连接到受试者鞋子的步速传感器
  • 使用计步器算法计算的值,该算法基于连接到主体手臂的智能手机的加速度计数据

我试图将两者结合起来进行直观比较。当前图表如下所示(步幅传感器为橙色,算法为蓝色):

Step Frequency plot with two data sources

您可以看到,计算出的数据始终具有正确的(90°)角度,并且不会将实际数据点与线性函数连接起来。这准确地反映了当您查看当前步频时您会看到的内容。每次更新时,该值立即更改为新值。它看起来是这样的,因为我故意将两个具有相同x坐标(时间戳)的数据点放入我的数据集中。这看起来类似于以下代码:

% on new cadence
c(i) = [t old_cadence];
c(i+1) = [t new_cadence];

问题

所以我想让步幅传感器线图看起来和我自己的数据一样。即,它应该只包括垂直和水平连接线。在绘图功能中是否有一种模式可以自动执行此操作或者我将如何执行此操作? (我显然想要比循环元素更好的东西)

提前感谢任何提示!

2 个答案:

答案 0 :(得分:6)

您正在寻找stairs功能:

y = randi([3,8],1,20);
x = 1:20;

stairs(x,y)
ylim([0,10])

enter image description here

答案 1 :(得分:3)

你在寻找这样的东西吗?:

rng(620)
n = 10;
y = rand(1,n);
x = 1:n;

yy = nan(1,2*n-1);
yy(2:2:end) = y(1:end-1);
yy(1:2:end) = y;

xx = nan(1,2*n-1);
xx(2:2:end) = x(2:end);
xx(1:2:end) = x;

plot(x,y,'--o')
hold on
plot(xx,yy,'red')

enter image description here