在 Matlab 中绘制仅具有水平和垂直连接的数据
Plotting data with only horizontal and vertical connections in Matlab
我得到了什么
我在慢跑期间获得了两个瞬时步频数据源:
- 附在受试者鞋子上的步幅传感器
- 使用计步器算法根据智能 phone 附在受试者手臂上的加速度计数据计算的值
我试图将两者绘制在一起以获得直观的比较。当前图如下所示(橙色来自步幅传感器,蓝色来自算法):
您可以看到,计算出的数据总是直角 (90°),并且没有将实际数据点与线性函数连接起来。这准确地反映了您在查看当前步频时会看到的内容。每次更新时,该值都会立即更改为一个新值。它看起来是这样的,因为我故意将具有相同 x 坐标(时间戳)的两个数据点放入我的数据集中。这可能类似于以下代码:
% on new cadence
c(i) = [t old_cadence];
c(i+1) = [t new_cadence];
问题
所以我想让步幅传感器线图看起来和我自己的数据一样。即,它应该只包括垂直和水平连接线。 plot 函数中是否有一种模式可以自动执行此操作,或者我将如何执行此操作? (我显然想要比遍历元素更好的东西)
提前感谢您的任何提示!
您正在寻找这样的东西吗?:
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')
您正在查找 stairs 函数:
y = randi([3,8],1,20);
x = 1:20;
stairs(x,y)
ylim([0,10])
我得到了什么
我在慢跑期间获得了两个瞬时步频数据源:
- 附在受试者鞋子上的步幅传感器
- 使用计步器算法根据智能 phone 附在受试者手臂上的加速度计数据计算的值
我试图将两者绘制在一起以获得直观的比较。当前图如下所示(橙色来自步幅传感器,蓝色来自算法):
您可以看到,计算出的数据总是直角 (90°),并且没有将实际数据点与线性函数连接起来。这准确地反映了您在查看当前步频时会看到的内容。每次更新时,该值都会立即更改为一个新值。它看起来是这样的,因为我故意将具有相同 x 坐标(时间戳)的两个数据点放入我的数据集中。这可能类似于以下代码:
% on new cadence
c(i) = [t old_cadence];
c(i+1) = [t new_cadence];
问题
所以我想让步幅传感器线图看起来和我自己的数据一样。即,它应该只包括垂直和水平连接线。 plot 函数中是否有一种模式可以自动执行此操作,或者我将如何执行此操作? (我显然想要比遍历元素更好的东西)
提前感谢您的任何提示!
您正在寻找这样的东西吗?:
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')
您正在查找 stairs 函数:
y = randi([3,8],1,20);
x = 1:20;
stairs(x,y)
ylim([0,10])