博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab 如何绘制复杂曲线的包络线
阅读量:4317 次
发布时间:2019-06-06

本文共 835 字,大约阅读时间需要 2 分钟。

Matlab 如何绘制复杂曲线的包络线

http://jingyan.baidu.com/article/aa6a2c14d36c710d4c19c4a8.html

 

如果一条曲线(比如声音波形)波动很大,曲折复杂,可以通过绘制包络线的方式使其更加平滑和清晰。本经验帮助刚接触matlab不久的新手完成这一过程。

工具/原料

  • Matlab 软件

  • 样本数据

方法/步骤

  1.  

    处理前后的效果对比,图示为某声波傅里叶变换(fft)后的频谱图。

    Matlab 如何绘制复杂曲线的包络线
  2.  

    原数据为横纵坐标为 frequency 和 Amplitude,都是<2048x1 double>的数据,即包含2048个数据点,由 subplot(2,2,1),plot(fr,Am); 绘制而成。

  3.  

    包络线的生成,需要将原数据分成等宽度的小段,每段取一个最高点所对应的横坐标和纵坐标(如图所示)。比如设定每小段的长度为 d = 4 或 8 或 16(或2048的其他约数),然后运行

    y=reshape(Amplitude,d,2048/d);

    y=max(y);

    x=linspace(0,max(frequency),2048/d);

    所得 x 和 y 即为包络线的横纵坐标。

    Matlab 如何绘制复杂曲线的包络线
  4.  

    其中关键的函数为 reshape() 和 linspace()。

    reshape() 函数重新调整矩阵的行数、列数、维数。reshape(X,m,n) 可以把矩阵 X 调整为 m 行 n 列的矩阵,比如:

    >> reshape([1 2 3 4 5 6],2,3)

     

    ans =

     

         1     3     5

         2     4     6

     

    linspace() 用于生产线性矢量。 linspace(a,b,n) 可以生产从 a 到 b 之间共 n 个元素组成的一维数组。比如:

    >> linspace(1,5,4)

     

    ans =

     

        1.0000    2.3333    3.6667    5.0000

     

转载于:https://www.cnblogs.com/gisalameda/p/4904548.html

你可能感兴趣的文章
MTK android 设置里 "关于手机" 信息参数修改
查看>>
隐私声明
查看>>
页面插入iframe嵌套
查看>>
019 jquery中的动画
查看>>
hello C#
查看>>
036 互联网的框架演变
查看>>
转载:基于《知网》的词汇语义相似度计算
查看>>
常用C库简介
查看>>
Linux 上的常用文件传输方式介绍与比较
查看>>
[转载]电话销售技巧全面大攻略
查看>>
LZW压缩算法原理及其Java实现
查看>>
VNC-Server installation on CentOS 7
查看>>
Unity中用触摸控制物体旋转和放大
查看>>
hibernate
查看>>
appium环境安装
查看>>
uva 10859
查看>>
ssm整合-动态项目-day13
查看>>
Visual Studio Debug
查看>>
Souerce 之 图片格式
查看>>
PD 之 连接数据库并导出数据及生成PDM文件
查看>>