【信号转换】基于格拉姆矩阵(GASF/GADF)的一维信号转换图像算法【附MATLAB代码】

这篇具有很好参考价值的文章主要介绍了【信号转换】基于格拉姆矩阵(GASF/GADF)的一维信号转换图像算法【附MATLAB代码】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章来源:微信公众号:EW Frontier

一.基于GAF的一维信号转换图像算法

1.1基本概念

GAF是利用坐标变化和格拉姆矩阵,实现将时间序列变化成为二维图像的 一种图像编码技术。GAF是采用极坐标系表示时间矩阵的,再用格拉姆矩阵对

生成的角度进行变换,这主要是因为格拉姆矩阵能够保持时间的依赖性,但是 并不能很好的区分有价值信息和高斯噪声,所以要先进行一次空间转换,最常 用的便是将笛卡尔坐标系转换成为极坐标系。

笛卡尔坐标系包括直角坐标系和斜角坐标系,两条数轴相交于原点,构成 了平面仿射坐标系,而且两数轴的度量单位一致。当两坐标轴垂直的时候就被 称为直角坐标系,否则就是斜角坐标系。提取的加速度数据一般都为二维直角 坐标系下的数据,每一个点的位置都由两个数字决定。而极坐标系也属于二维 坐标系,是指在平面取一点作为极点,并引出一个轴作为极轴,并确定单位长度与角度的正方向(一般取逆时针为正)。极坐标上的点位置都是由距离原点的距离以及和极轴的角度表示。因此笛卡尔坐标系的点可以与极坐标一一对应。

格拉姆矩阵可以计算一组向量的线性相关关系,常用于线性代数和几何中。一组n个向量的格拉姆矩阵是由一对对向量的点积组成的矩阵,如式(1)所示:

bpsk_snr=0db.mat,python,机器学习,算法

如果向量u和v的范数都为1,那么两个向量的点积可以改写为:

bpsk_snr=0db.mat,python,机器学习,算法

由此可知,如果处理的是单位向量,那么它们之间的点积只由角度所决定,这个角度可以用弧度表示,且计算出来的值将在-1和1之间。假设处理都是单 位向量,那么格拉姆矩阵将变为式(3):

bpsk_snr=0db.mat,python,机器学习,算法

式中,θi,j为两个向量之间的夹角。

1.2实现方法

斜拉索的加速度响应是典型的一维时间序列,通常在直角坐标系下,其横轴表示时间,纵坐标则代表了每一个时间点所对应的加速度的大小,单位是m/s2。

通过GAF将加速度响应转换为图形数据,实现过程如下:

步骤一,假定传感器采集加速度数据为X={x1,x2,x3,……,xn-1,xn},首 先通过式(4)进行归一化处理,并且将其缩放到[-1,1]之间。

bpsk_snr=0db.mat,python,机器学习,算法

步骤二,将步骤一中缩放后的加速度时间序列转换成为极坐标。主要注意 两个变量:加速度的值及其对应的时间戳。这两个变量可以分别用极坐标的角 度和半径来表示。在极坐标上进行编码,将缩放之后的加速度值用角余弦进行编码,值在[0,π]之间。将其对应的时间戳编码成为半径,公式如下所示:

bpsk_snr=0db.mat,python,机器学习,算法

式中,it—— i x对应的时间戳;M——归一化因子。

将区间[0,1]分成若干份,然后将0舍弃把剩余的点与时间序列数据关联起来,并且让每一个点都落到极坐标中的一个单位圆之中。当时间增加时,加速度时间序列也会以不同的角度和半径在这个单位圆之内不断的扭曲,如图1所示:

bpsk_snr=0db.mat,python,机器学习,算法

图1极坐标编码示意图

这样编码的优异性体现在:①整个编码都是双射的,即给定一段时间序列, 通过此种方式进行编码,得到的在极坐标下的结果将是唯一的。②极坐标相较 于直角坐标系,保持了绝对的时间相关性,不同间隔的时间序列经过重新缩放 并转化为极坐标,也会包含着不同的角度界限,这也为加速度一维时间序列在 转化成二维图像数据时提供了不同的信息粒度。

步骤三,加速度时间序列经过步骤二的极坐标变换,使其也蕴含了时间信

息,因此可以利用GAF对加速度时间序列进行重构。基于不同的算式可以生成 两种不同的图像,分别是格拉姆角和场(GASF)和格拉姆角差场(GADF),其表达 式分别为式(6)和式(7)。

bpsk_snr=0db.mat,python,机器学习,算法

由两个公式可知,随着时间的增加,编码的位置从矩阵的左上角一直运动

到右下角,所以时间维度就通过GAF编码到了矩阵的几何结构当中去。为了进 一步解释GAF编码过程,以图4-2为例进行说明。在加速度时间序列的波形中存在着三个较为明显的波峰,其中第一个波峰要小于后两者。在转化后的二维图像中,同样出现了三个交叉特征,波峰较小的颜色也更浅,从左上角到右下角与加速度时程波形一一对应,说明经过GAF编码技术转化后,二维图像中的相应位置处以点、线、颜色等不同的特征形式对加速度时间序列进行了完整映 射。

bpsk_snr=0db.mat,python,机器学习,算法

图2 GAF映射说明

二.MATLAB代码

本代码需要各位自行设置输入信号a,带入下列程序即可运行,本文的GASF与GDSF图像是利用BPSK调制信号生成。

load BPSK_SNR=0dB.mat% load BPSK_SNR=0dB.mati=1a=squeeze(data(i,1,:))+squeeze(data(i,2,:))*1j; %% GASF  GADF%% 生成数据​X = real(a');X = (X - min(X)) / (max(X) - min(X));m = length(X); %% 数据处理% 将数据归一化[1,-1]X = ((X - max(X)) + (X - min(X)))/(max(X) + min(X)); % 求极坐标fai = acos(X);% 生成GASF = X' * X - sqrt(1 - X.^2)' * sqrt(1 - X.^2);GADF = sqrt(1-X.^2)' * X + X' * sqrt(1 - X.^2);%% 显示图(热力图)% im_1 = figure(1);imagesc(GASF)title('GASF')% saveas(im_1, 'GASF_2.bmp');% im_2 = figure(2);imagesc(GADF)title('GADF');% saveas(im_2, 'GADF_2.bmp');

三.仿真结果

bpsk_snr=0db.mat,python,机器学习,算法

bpsk_snr=0db.mat,python,机器学习,算法文章来源地址https://www.toymoban.com/news/detail-842145.html

到了这里,关于【信号转换】基于格拉姆矩阵(GASF/GADF)的一维信号转换图像算法【附MATLAB代码】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 将时间序列转成图像——格拉姆角场方法 Matlab实现

    目录 1 方法 2 Matlab代码实现 3 结果 【若觉文章质量良好且有用,请别忘了 点赞收藏加关注 ,这将是我继续分享的动力,万分感谢!】 其他: 1.时间序列转二维图像方法及其应用研究综述_vm-1215的博客-CSDN博客 2.将时间序列转成图像——马尔可夫转移场方法 Matlab实现_vm-1215的

    2024年01月21日
    浏览(61)
  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上)

            在前面的几个最小二乘的文章中,实际上已经看到Gram-Schmidt正交化的影子。在我个人看来,Gram-Schmidt正交化更像是专门为了简化最小二乘计算而量身定制的一种算法。下面,我会从最小二乘的经典应用 --- \\\"拟合直线\\\"开始,慢慢引出Gram-Schmidt的核心思想 —— 那就是,

    2024年02月10日
    浏览(51)
  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(下)

            到目前为止,我们都是在反复强调“对于无解的方程组Ax=b而言,如果矩阵A是标准正交矩阵的话,就怎么怎么好了。。。。”。因为,不论是求投影还是计算最小二乘的正规方程,他们都包含了的逆的计算。只有当A为标准正交矩阵Q时,就不再需要计算的逆了,这时,

    2024年02月13日
    浏览(58)
  • 基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 vivado2019.2 matlab2022a         心电图(ECG)是一种广泛应用于医疗诊断的技术,用于监测心脏的电活动。随着医疗技术的发展,基于FPGA(现场可编程门阵列)的ECG信号处理系统

    2024年02月10日
    浏览(47)
  • 基本的信号——矩阵脉冲信号(门函数)

    门函数的数学表达式为: example1: 矩形脉冲信号的matlab代码如下: 运行结果如下:  example2: 矩形脉冲信号的matlab代码如下:  运行结果如下:     参考文献:信号与系统(第2版)——陈后金编著

    2024年02月11日
    浏览(42)
  • vivado:差分信号和单端信号 的相互转换 IBUFDS OBUFDS

    目录 目录 一、背景介绍 二、差分信号转单端信号  (1)使用Verilog (2)使用VHDL 三、单端转差分信号  (1)使用Verilog (2)使用VHDL             FPGA内部所有信号都是单端的,差分只出现在引脚上。          在FPGA的开发过程中经常遇到,差分信号转单端信号或者单端信

    2024年02月06日
    浏览(48)
  • 8.4 利用集成运放实现的信号转换电路

    在控制、遥控、遥测、近代生物物理和医学等领域,常常需要将模拟信号进行转换,如将信号电压转换成电流,将信号电流转换成电压,将直流信号转换成交流信号,将模拟信号转换成数字信号,等等。 在控制系统中,为了驱动执行机构,如记录仪、继电器等,常需要将电压

    2024年02月16日
    浏览(55)
  • 使用matlab实现图像信号的色彩空间转换

    下面的这个代码是在使用了rgb2hsi()方法失败后,进行修改的。 rgb2hsi(img)这个方法可以将RGB图像转换为HIS图像;但是爆出了 Untitled5(line 5)hsi = rgb2hsi(img)这个错误。 查了下可能是因Matlab版本不支持rgb2hsi函数。Matlab版本较旧,所以就手动实现RGB到HSI的转换。 通过分离RGB通道,将图

    2024年02月04日
    浏览(49)
  • 【SIMULINK】simulink实现信号矩阵整合、求逆、转置、分解、向量矩阵相乘(非matlab)

    simulink实现信号矩阵,并实现分解 simulink实现信号矩阵求逆 simulink实现信号矩阵转置 simulink矩阵向量相乘

    2024年02月11日
    浏览(44)
  • 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

    由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。 假设有两个向量 a 1 = ( x 1 , y 1 , z 1 ) a_1 = (x_1, y_1, z_1) a 1 ​ = ( x 1 ​ , y 1 ​ , z 1 ​

    2024年02月03日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包