Imu数据均值滤波分析
来源:互联网 发布:win10禁用windows键 编辑:程序博客网 时间:2024/05/21 02:19
Imu数据均值滤波分析
GitHub仓库:https://github.com/XinLiGitHub/ImuMeanFilter
PS:博文不再更新,后续更新会在GitHub仓库进行。
1,前言
Imu数据分析中常用均值滤波,均值滤波后的数据可以直观的看出,传感器的零偏稳定性、零偏和温度的关系、传感器数据和时间的关系。虽然得不到具体的数据指标,但是可以的感觉到传感器的好坏,传感器测试非常有必要。
2,MATLAB程序
filter_mean.m文件
function [ y ] = filter_mean( x, n )% filter_mean 均值滤波函数% x:数据% n:参数% 注意:当数据为二维数组时,按列求均值if (n == floor(n)) && (n > 0) if n > 1 [line, row] = size(x); if line > 1 if line >= n for i = 1 : floor(line / n) y(i, :) = mean(x((((i - 1) * n) + 1) : (i * n), :)); end else error('“filter_mean”函数调用错误!'); end else if row >= n for i = 1 : floor(row / n) y(:, i) = mean(x(:, (((i - 1) * n) + 1) : (i * n))); end else error('“filter_mean”函数调用错误!'); end end else y = x; endelse error('“filter_mean”函数调用错误!');end
imu_data.m文件
clc; %清空命令行窗口clear; %清空工作区data = dlmread('data.dat'); %从文本中读取数据,速率:100Hzgyro_original = data(:, 3:5); %陀螺原始数据,单位:deg/sacc_original = data(:, 7:9); %加计原始数据,单位:ggyro_mean_1s = filter_mean(gyro_original, 100); %陀螺1s均值滤波acc_mean_1s = filter_mean(acc_original, 100); %加计1s均值滤波gyro_mean_10s = filter_mean(gyro_original, 1000); %陀螺10s均值滤波acc_mean_10s = filter_mean(acc_original, 1000); %加计10s均值滤波time_original = 0:0.01:(length(gyro_original) - 1) * 0.01; %生成时间数据,间隔0.01stime_mean_1s = 0:1:(length(gyro_mean_1s) - 1) * 1; %生成时间数据,间隔1stime_mean_10s = 0:10:(length(gyro_mean_10s) - 1) * 10; %生成时间数据,间隔10sfigure('name', '原始数据'); %新建绘图窗口subplot(2, 3, 1); %第一幅子图plot(time_original, gyro_original(:, 1)); %绘图title('陀螺 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_x(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 2); %第二幅子图plot(time_original, gyro_original(:, 2)); %绘图title('陀螺 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_y(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 3); %第三幅子图plot(time_original, gyro_original(:, 3)); %绘图title('陀螺 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_z(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 4); %第四幅子图plot(time_original, acc_original(:, 1)); %绘图title('加计 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_x(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 5); %第五幅子图plot(time_original, acc_original(:, 2)); %绘图title('加计 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_y(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 6); %第六幅子图plot(time_original, acc_original(:, 3)); %绘图title('加计 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_z(g)'); %添加y轴标签grid on; %添加网格线figure('name', '1s均值'); %新建绘图窗口subplot(2, 3, 1); %第一幅子图plot(time_mean_1s, gyro_mean_1s(:, 1)); %绘图title('陀螺 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_x(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 2); %第二幅子图plot(time_mean_1s, gyro_mean_1s(:, 2)); %绘图title('陀螺 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_y(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 3); %第三幅子图plot(time_mean_1s, gyro_mean_1s(:, 3)); %绘图title('陀螺 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_z(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 4); %第四幅子图plot(time_mean_1s, acc_mean_1s(:, 1)); %绘图title('加计 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_x(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 5); %第五幅子图plot(time_mean_1s, acc_mean_1s(:, 2)); %绘图title('加计 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_y(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 6); %第六幅子图plot(time_mean_1s, acc_mean_1s(:, 3)); %绘图title('加计 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_z(g)'); %添加y轴标签grid on; %添加网格线figure('name', '10s均值'); %新建绘图窗口subplot(2, 3, 1); %第一幅子图plot(time_mean_10s, gyro_mean_10s(:, 1)); %绘图title('陀螺 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_x(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 2); %第二幅子图plot(time_mean_10s, gyro_mean_10s(:, 2)); %绘图title('陀螺 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_y(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 3); %第三幅子图plot(time_mean_10s, gyro_mean_10s(:, 3)); %绘图title('陀螺 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('gyro_z(deg/s)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 4); %第四幅子图plot(time_mean_10s, acc_mean_10s(:, 1)); %绘图title('加计 X轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_x(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 5); %第五幅子图plot(time_mean_10s, acc_mean_10s(:, 2)); %绘图title('加计 Y轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_y(g)'); %添加y轴标签grid on; %添加网格线subplot(2, 3, 6); %第六幅子图plot(time_mean_10s, acc_mean_10s(:, 3)); %绘图title('加计 Z轴'); %添加标题xlabel('time(sec)'); %添加x轴标签ylabel('acc_z(g)'); %添加y轴标签grid on; %添加网格线
3,运行结果
100Hz原始数据
1s均值数据
10s均值数据
阅读全文
3 0
- Imu数据均值滤波分析
- IMU数据融合:互补,卡尔曼和Mahony滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波
- 均值滤波&阈值均值滤波
- 均值滤波 中值滤波 对称均值滤波
- 惯性测量模块数据的卡曼滤波(Kalman filtering of IMU data)
- 数据分析2 数据滤波
- 中值滤波VS.均值滤波
- 均值滤波vs中值滤波
- 图像处理:均值滤波
- K近邻均值滤波
- 对称邻近均值滤波
- 快速均值滤波
- 为了学习,找些好伙伴吧
- Python3教程--协程(转自廖雪峰的官方网站)
- Hibernate的主键生成策略
- lintcode 85 在二叉树中插入节点
- 跟我学TCP/IP系列4
- Imu数据均值滤波分析
- 什么是优先级?
- mvcc 数据库相关
- eclipse 自带git插件 文件提交后修改标志不明显
- 腾讯云cors配置
- 四种色彩模式ARGB_8888、ARGB_4444、 RGB_565、 ALPHA_8的区别
- 2017计蒜客第二场(AB)
- springMVC接收返回json,基于spring4
- 跟我学TCP/IP系列2