Matlab-绘制日期图

之前写过一个关于matlab绘制时间的文章(传送门:Matlab-绘制日期和持续时间图),正好有个同学问道这个问题,他是采集了手机的加速度数据进行处理,之前也有一个关于这个文章(传送门:Matlab从移动设备获取加速度数据对步数进行计数

下图是他提供的代码报错问题

看代码报错提示,出现在18行,

看变量区对应的Acceleration,

接着看提取的XYZ,可以发现对应的XYZ是一个timetable类,如果要取真实对应的数据, 还需要写明对应类下面的列,也就是x.X y.Y z.Z才是获取到真实的数据

代码修改为:

mag = sqrt(sum(x.X.^2 + y.Y.^2 + z.Z.^2));

但是结果依旧报错,为啥呢???

查看mag变成了一个1x1的数据

原因:代码中的sum求和不对,

可修改为:

mag = sqrt(x.X.^2 + y.Y.^2 + z.Z.^2);%% 或者mag = sqrt(sum(x.X.^2 + y.Y.^2 + z.Z.^2,2));

最后绘制图像的时候又出现了一个问题​​​​​​​

>> plot(t,mag);数据输入必须与坐标轴配置匹配。数值坐标轴必须具有数值数据输入,或者具有可转换为双精度值的数据输入。

提示我们t的变量类似不对

为啥呢:

仔细看代码会发现前面plot的时候有个hold on,也就是说明后面的plot也是接着前面的xlabel,前面的xlabel未定义为timetable,从而导致了这个报错,代码最终修改为:​​​​​​​

load('test1.mat');t = Acceleration.Timestamp;x = Acceleration.X;y = Acceleration.Y;z = Acceleration.Z;figureplot(x,'b')hold on;plot(y,'r')hold on;plot(z,'g')hold off;legend('X','Y','Z');xlabel('Relative time (s)');ylabel('Acceleration (m/s^2)');x = Acceleration(:,1);y = Acceleration(:,2);z = Acceleration(:,3);mag = sqrt(x.X.^2 + y.Y.^2 + z.Z.^2);figureplot(t,mag);

完美运行,撒花完结

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值