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

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

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

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

工具/原料

  • Matlab 软件
  • 样本数据

方法/步骤

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

  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 即为包络线的横纵坐标。

  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

时间: 2024-11-07 04:23:31

Matlab 如何绘制复杂曲线的包络线的相关文章

MATLAB中绘制质点轨迹动图并保存成GIF

工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t).^2);y = sin(2*t).*(sin(t).^2);z = t;comet(x,y,0.1); %绘制二维%comet3(x,y,z,0.1); %绘制三维 这有一个问题在于comet或comet3无法控制绘制的动画的速度,为了实现这一点,一个可行的方法是重写comet和comet3,在每

Sketch Nyquist plot 徒手绘制Nyquist 曲线

Sketch Nyquist plot 这是相当纠结的领悟.我始终没明白Nyquist曲线究竟是怎么回事,简直痛苦 之前讲了 波特图入门 徒手绘制波特图 波特图就是讲幅频特性和相频特性分别绘制在两幅图片上,而Nyquist曲线是将这两幅图合并成一幅图. 现实生活中多是黑箱模型,系统内部的结构是不知道的,为了测试系统的幅频特性和相频特性,会采用向系统输入各种频率不同的正弦信号的形式,(默认线性系统),这样得到输出信号和输入信号做比较.每一个频率都有对应的输出幅值和相角! 什么是Nyquist曲线?

【MFC】MFC绘制动态曲线,用双缓冲绘图技术防闪烁

摘自:http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ MFC绘制动态曲线,用双缓冲绘图技术防闪烁 2011-07-14 10:34:54|  分类: 学习笔记 |  标签:双缓冲绘图技术  mfc  动态曲线   |举报 |字号 订阅 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新.一.如何绘制动态曲线. 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静

C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码

C#WPF 如何绘制几何图形? 怎么绘制坐标系? 这离不开Path(System.Windows.Shapes)和StreamGeometry(System.Windows.Media)类. 一.建立WPF工程 二.添加代码 MainWindow.xaml 中代码 <Window x:Class="WPFDrawingTraning.MainWindow"         xmlns="<a target=_blank href="http://sche

canvas绘制贝塞尔曲线

原文:canvas绘制贝塞尔曲线 1.绘制二次方贝塞尔曲线 quadraticCurveTo(cp1x,cp1y,x,y); 其中参数cp1x和cp1y是控制点的坐标,x和y是终点坐标 数学公式表示如下: 二次方贝兹曲线的路径由给定点P0.P1.P2的函数B(t)追踪: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <

Matlab程序学习(散点边界线/包络线)

针对散点边界线,Matlab重的convhull为凸包络线,往往不能满足实际工作需要. 作散点的紧致包络线,需要考虑到凹凸点,为减少包络线与散点数据的过度紧密(穿过全散点),并不过度包络(类似convhull),从以下思路来实现: 1.散点数据按行走方向排序,并判断点的凹凸: 2.针对凹点,添加阈值,通过夹角判断,去除部分凹点,然后继续此种循环判断,直到所有凹点满足要求: 程序文件: function y2=ScatterHull(Data,ang_2) % Thinking from Dsp

4. 绘制光谱曲线QGraphicsView类

一.前言 Qt的QGraphicsView类具有强大的视图功能,与其一起使用的还有QGraphicsScene类和QGraphicsItem类.大体思路就是通过构建场景类,然后向场景对象中增加各种图元,最后利用QGraphicsView类对场景进行显示. 二.绘制光谱曲线 实现功能主要有: 1 传递点击图像行列号,然后绘制曲线,代码如下: 1 void SpectralProfileDialog::AddPressSlot() 2 { 3 //setModal(0); 4 HyperProces

pyqt中使用matplotlib绘制动态曲线

一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟,每一秒钟绘制一个点,X轴长度超过1分钟,则左移1秒刻度,实现动态效果 2)Y轴显示随机变化的数值,1-100 三.准备工作 1环境:python3.3,eric5,pyqt4 四.开始动手: 使用Eric创建新项目: 在设计编码前期主要用到Eric的两个窗口:源码和窗体浏览器,类似delphi.

绘制希尔伯特曲线

转自:http://www.easyx.cn/samples/View.aspx?id=57 #include "stdafx.h" #include <graphics.h>#include <conio.h>#include <string>using namespace std; int g_len; // Hilbert 曲线的单位长度//string a;//string a = "123"; // 递归绘制 Hilbe