【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

对于实时采集的加速度数据,可以应用信号处理算法,如数字滤波和积分运算,将其转换为速度和位移数据。下面是一个简要的概述:

1. 数据采集:首先需要进行数据采集,通过传感器获取物体的加速度数据。这可以通过加速度计等传感器来实现,例如使用微电机惯性测量单元(IMU)或加速度传感器。

2. 数字滤波:为了去除噪声和不必要的高频分量,可以应用数字滤波技术,如低通滤波器。常见的滤波器类型包括巴特沃斯滤波器、无限脉冲响应(IIR)滤波器和有限脉冲响应(FIR)滤波器。滤波后的信号将更加平滑和稳定。

3. 数值积分:将经过滤波的加速度信号积分一次,可以得到速度信号。数值积分是通过近似求解离散点间的微分来实现的。积分操作会导致积分误差的累积,因此需要考虑误差修正和积分漂移校准的方法。

4. 二次积分:将经过滤波和积分的速度信号再次积分,可以得到位移信号。同样,二次积分也会引入积分误差的累积,因此需要对误差进行校正和修正。

5. 校准和校正:为了获得准确的结果,可能需要进行传感器的校准和校正。这包括零偏校准、灵敏度校准和加速度计的温度效应校正等。

需要注意的是,将加速度数据转换为速度和位移的过程是一个近似计算,其中存在积分误差的累积,尤其是在长时间的测量中。因此,在进行精确位移测量时,需要考虑积分误差的校准和修正。

总结来说,将加速度数据转换为速度和位移的过程包括数据采集、数字滤波、数值积分和二次积分。每个步骤都需要选择合适的算法和参数,并进行校准和修正,以获得准确可靠的速度和位移结果。

📚2 运行结果

部分代码:

%% Processed inputs
%--------------------------------------------------------------------------
time   = data(:,1);         % Time vector
accval_g = data(:,2);       % Acceleration in g
accval = data(:,2)*9.81;    % Acceleration in m/s^2
L = size(data,1);           % Length of signal
Fs = 1/(time(2)-time(1));   % Sampling frequency                    
Ts = 1/Fs;                  % Sampling period       

%% Displacement, Velocity and Acceleration
%--------------------------------------------------------------------------
[~, ~, ~, filtered_acc_g] ...
          = accelo2disp(time,Ts, Fs, Fcut,alpha, accval_g, Lvdtmat,...
                            lvdtcons, accbiasV, accsensi, filtertype...
                            ,filtermethod,firorder);
                        
[LVDTfilt, filtered_disp, filtered_vel, filtered_acc] ...
          = accelo2disp(time,Ts, Fs, Fcut,alpha, accval, Lvdtmat,...
                            lvdtcons, accbiasV, accsensi, filtertype...
                            ,filtermethod,firorder);

%% Compute the frequency
%--------------------------------------------------------------------------
% Compute the Fourier transform of the signal.
Y = fft(filtered_acc);

% Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 
% based on P2 and the even-valued signal length L.
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);

% Define the frequency domain f and plot the single-sided amplitude spectrum P1.
% On average, longer signals produce better frequency approximations.
f = Fs*(0:(L/2))/L;

%% Plot Acceleration vs.time
%--------------------------------------------------------------------------
figure;
subplot(5,2,1)
ax1 = plot(time, accval_g, 'LineWidth', 1);
grid on
xlabel('Time ($sec.$)','Interpreter', 'latex');
ylabel('Acceleration ($g$)','Interpreter', 'latex');
title('Acceleration vs.time (with DC bias)')

ax2 = subplot(5,2,2);
plot(time, filtered_acc_g, 'LineWidth', 1)
grid on
xlabel('Time ($sec.$)','Interpreter', 'latex');
ylabel('Acceleration ($g$)','Interpreter', 'latex');
title('Acceleration vs.time (DC bias removed)')

ax3 = subplot(5,2,3:4);
plot(time,filtered_acc, 'LineWidth', 1)
grid on
xlabel('Time ($sec.$)','Interpreter', 'latex');
ylabel('Acceleration ($\frac{m}{s^2}$)','Interpreter', 'latex');
title('Acceleration vs.time (DC bias removed)')

ax4 = subplot(5,2,5:6);
plot(time,filtered_vel, 'LineWidth', 1)
grid on
xlabel('Time ($sec.$)','Interpreter', 'latex');
ylabel('Velocity ($\frac{m}{s}$)','Interpreter', 'latex');
title('Velocity vs.time')

ax5 = subplot(5,2,7:8);
plot(time,filtered_disp, 'LineWidth', 1)
grid on
xlabel('Time ($sec.$)','Interpreter', 'latex');
ylabel('Displacement ($m$)','Interpreter', 'latex');
title('Displacement vs.time')

ax6 = subplot(5,2,9:10);
plot(f,P1, 'LineWidth', 1)
grid on
title('Frequency Spectrum of Acceleration')
xlabel('f(Hz)')
ylabel('|P1(f)|')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

1. 王思远, 张逸凡. (2016). 基于MEMS加速度计测量的速度和位移测量方法. 精仪与检测技术, 4, 29-32.

2. 刘兆岑, 张进杰, 吴树荣等. (2018). 加速度传感器信号滤波技术及其在位移测量中的应用. 自动化仪表, 39(5), 38-42.

3. 马靖蒙, 黄艺帆, 赵晨曦等. (2017). 基于自适应滤波和积分的加速度测速算法. 机械工程学报, 53(3), 68-74.

4. 高素平, 汪思悦, 毛亚伟等. (2016). 基于加速度测量的振动位移自适应无源解调算法. 哈尔滨工程大学学报, 37(5), 683-688.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/57977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

dubbo的高可用

1、zookeeper宕机与dubbo直连 现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务。 原因: 健壮性 (1)监控中心宕掉不影响使用,只是丢失部分采样数据. (2)数据库宕掉后&#x…

springboot访问请求404的原因

是记录,可能出现错误 可能出现的原因 1.你请求的URL路径不对,比如说你请求的路径是/usr/list,GET方法,但是你UserController上面的RequestMapping是这个样子:RequestMapping(“user”),有可能哈 2.前端的请求时GET方法,后端对应的处理函数的方…

C++ 指针数组

如果一个数组的每个元素都是指针变量,这个数组就是指针数组。指针数组的每个元素都必须是同一类型的指针。 1.一维指针数组 声明一维指针数组的语法形式: 数据类型*数组名[下标表达式];下标表达式指出数组元素的个数,数据类型确定每个元素…

Kafka3.0.0版本——生产者如何提高吞吐量

目录 一、生产者提高吞吐量参数设置二、产者提高吞吐量代码示例 一、生产者提高吞吐量参数设置 batch.size:设置批次大小,默认16klinger.ms:设置等待时间,修改为5-100msbuffer.memory:设置缓冲区大小, 默认…

信号槽中的函数重载

信号槽中的函数重载 QT4的方式QT5的方式函数指针重载函数QT5信号函数重载解决方案 总结 QT4的方式 Qt4中声明槽函数必须要使用 slots 关键字, 不能省略。 信号函数: 槽函数: mainwondow: cpp文件: #include "mainwindow.h"…

快速部署外卖系统:利用现代工具简化开发流程

在竞争激烈的外卖市场中,快速部署高效稳定的外卖系统是餐饮企业成功的关键之一。本文将介绍如何利用现代工具简化外卖系统的开发流程,并附带代码示例,帮助开发者快速搭建功能完备、用户友好的外卖平台。 1. 简介 在外卖业务快速增长的背景…

使用express搭建后端服务

目录 1 创建工程目录2 初始化3 安装express依赖4 启动服务5 访问服务总结 上一篇我们利用TDesign搭建了前端服务,现在的开发讲究一个前后端分离,后端的话需要单独搭建服务。后端服务的技术栈还挺多,有java、php、python、nodejs等。在众多的技…

稍微深度踩坑haystack + whoosh + jieba

说到django的全文检索,网上基本推荐的都是 haystack whoosh jieba 的方案。 由于我的需求对搜索时间敏感度较低,但是要求不能有数据的错漏。 但是没有调试的情况下,搜索质量真的很差,搞得我都想直接用Like搜索数据库算了。 但是…

排序八卦炉之冒泡、快排

文章目录 1.冒泡排序1.1代码实现1.2复杂度 2.快速排序2.1人物及思想介绍【源于百度】2.2hoare【霍尔】版本1.初识代码2.代码分析3.思其因果 3.相关博客 1.冒泡排序 1.1代码实现 //插入排序 O(N)~O(N^2) //冒泡排序 O(N)~O(N^2) //当数据有序 二者均为O(N) //当数据接近有序或…

什么是 webpack?

Webpack 介绍 什么是 webpack? :::tip 官方描述 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个…

第四章 数据库安全性

问题的提出 (1)数据库的一大特点是数据可以共享 (2)数据共享必然带来数据库的安全性问题 (3)数据库系统中的数据共享不能是无条件的共享 这就引发了数据库安全性问题 1.数据库安全性概述 数据库的安全性…

MySQL日志——查询日志

1.查询日志 show variables like %general%;修改mysql的配置文件 /etc/my.cnf文件,添加如下内容: #该选项用来开启查询日志,可选值:0或者1;0代表关闭,1代表开启 general_log1 #设置日志的文件名&#xff0…

C# Blazor 学习笔记(8):row/col布局开发

文章目录 前言相关文章代码row和col组件B_rowB_col结构 使用 前言 可能是我用的element ui和 uView这种第三方组件用的太多了。我上来就希望能使用这些组件。但是目前Blazor目前的生态其实并不完善,所以很多组件要我们自己写。 我们对组件的要求是 我们在组件化一共…

纯粹即刻,畅享音乐搜索的轻松体验

纯粹即刻,畅享音乐搜索的轻松体验 在当今快节奏的生活中,我们常常渴望一种简单而便捷的方式来探索和享受音乐。现在,你可以纯粹即刻地畅享音乐搜索的轻松体验。无论你是寻找热门歌曲还是探索不同风格的音乐,这款应用将为你带来随…

地址空间细致入微+深入了解页表

目录 地址空间保存了什么? 页表到底是怎么存储的 我们都知道,我们进程看到的空间其实是虚拟内存,真正的内存是需要页表的映射才能找到真正的物理内存,那么我我们有两个问题的引出那么进程地址空间是保存了什么呢?页表…

Maven项目解决cannot resolve plugin maven-deploy-plugin:2.7

导入maven项目后,编辑的时候提示一些插件加载失败!大概率是你的网络有问题,插件下载失败。 如下图:(网络突然好了,我想截图但是没有复现,用网上找到的截图代替,明白意思就行&#x…

一起学算法(选择排序篇)

距离上次更新已经很久了,以前都是非常认真的写笔记进行知识分享,但是带来的情况并不是很好,一度认为发博客是没有意义的,但是这几天想了很多,已经失去了当时写博客的初心了,但是我觉得应该做点有意义的事&a…

xlrd与xlwt操作Excel文件详解

Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。下面是各个模块的支持情况: .xls.xlsx获取文件内容写入数据修改文件内容保存样式调整插入图片xlrd√√√xlwt√√√√√xlutils√√√√xlwings√√√√√…

13-5_Qt 5.9 C++开发指南_基于信号量的线程同步_Semaphore

文章目录 1. 信号量的原理2. 双缓冲区数据采集和读取线程类设计3. QThreadDAQ和QThreadShow 的使用4. 源码4.1 可视化UI设计框架4.2 qmythread.h4.3 qmythread.cpp4.4 dialog.h4.5 dialog.cpp 1. 信号量的原理 信号量(Semaphore)是另一种限制对共享资源进行访问的线程同步机制…

【MMCV】mmpretrain/mmclassification概览、环境安装与验证

概览 MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络, 并支持了不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSelfSup,并开发了许多令人兴奋的新功能。 目前,预训练阶段对于视觉识别至关重要,凭借丰富而强…