精华内容
下载资源
问答
  • 三次样条插值法来求信号包络线,源码提供,此种方法求包络线较为传统也较为准确
  • MATLAB - 数字信号包络线的求取

    千次阅读 2021-01-20 16:59:24
    % 返回输入序列x的上下包络线,作为其解析信号的大小。 % % x的解析信号是利用希尔伯特实现的离散傅里叶变换得到的。 % % 这个函数首先移除x的均值,然后在计算包络线之后再把它加回来。 % % 如果x是一个矩阵,那么...

    函数:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 返回输入序列x的上下包络线,作为其解析信号的大小。              %
    % x的解析信号是利用希尔伯特实现的离散傅里叶变换得到的。           %
    % 这个函数首先移除x的均值,然后在计算包络线之后再把它加回来。      %
    % 如果x是一个矩阵,那么包络线对x的每一列都是独立的。             %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [yupper,ylower] = envelope(x)
    
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 返回用解析信号的大小确定的x的包络线。                        %
    % 解析信号通过使用长度为fl的Hilbert FIR滤波器对x进行滤波来计算。 %
    % 如果只指定两个参数,则使用此语法。                           %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [yupper,ylower] = envelope(x,fl,'analytic')
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 返回x的上、下均方根包络。包络是使用长度wl样本的滑动窗口确定的。  %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [yupper,ylower] = envelope(x,wl,'rms')
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 返回x的上峰和下峰包络线。                                  %
    % 包络线由至少np个样本分离的局部最大值上的样条插值确定。         %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    [yupper,ylower] = envelope(x,np,'peak')
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 在没有输出参数的情况下,绘制信号及其上下包络线。               %
    % 该语法接受以前语法中的任何输入参数。                         %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    envelope(___)
    

    例1: [up,lo] = envelope(q)

    % 信号生成
    t = 0:1/2000:2-1/2000;
    q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
    plot(t,q)
    
    
    % 包络线绘制
    [up,lo] = envelope(q);
    hold on
    plot(t,up,t,lo,'linewidth',1.5)
    legend('q','up','lo')
    hold off
    

    在这里插入图片描述
    例2: [up,lo] = envelope(q,100,'analytic');

    % 信号生成
    t = 0:1/1000:3;
    q1 = sin(2*pi*7*t).*exp(-t/2);
    q2 = chirp(t,30,2,5).*exp(-(2*t-3).^2)+2;
    q = [q1;q2]';
    plot(t,q)
    
    
    % 包络线绘制
    [up,lo] = envelope(q,100,'analytic');
    hold on
    plot(t,up,'-',t,lo,'--')
    hold off
    

    在这里插入图片描述

    例3:不同参数的包络线区别

    % 信号生成
    t = 0.5:-1/100:-2.49;
    z = airy(t*10).*exp(-t.^2);
    plot(z)
    
    % 无参数
    figure
    envelope(z)
    
    % 参数:analytic,使用50-tap Hilbert filter计算信号的包络线
    figure
    envelope(z,50,'analytic')
    
    % 参数:rms,使用40个样本的移动窗口来计算信号的RMS包络
    figure
    envelope(z,40,'rms')
    
    % 参数:peak,确定峰包络,在被至少10个样本分隔的局部极大值上使用非结点条件的样条插值。
    figure
    envelope(z,10,'peak')
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    例4:不同采样点的影响

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述


    参考文献:

    展开全文
  • 信号包络

    千次阅读 2015-08-10 09:21:47
    将一段时间长度的高频信号的峰值点连线,就可以得到上方(正的)一条线和下方(负的)一条线,这两条线就叫包络线包络线就是反映高频信号幅度变化的曲线。对于等幅高频信号,这两条包络线就是平行线,。  当用...
    将一段时间长度的高频信号的峰值点连线,就可以得到上方(正的)一条线和下方(负的)一条线,这两条线就叫包络线。包络线就是反映高频信号幅度变化的曲线。对于等幅高频信号,这两条包络线就是平行线,。
    


      当用一个低频信号对一个高频信号进行幅度调制(即调幅)时,低频信号就成了高频信号的包络线。这样的信号称为调幅信号。
      从调幅信号中将低频信号解调出来的过程,就叫做包络检波。也就是说,包络检波是幅度检波。
      包格检波常用的方法是采用二极管进行单向过滤后再进行低通滤波。没有二极管而直接进行低通滤波的话,会使正、负包络线抵消,从而检不出低频信号。


      除了包络检波,还有频偏(调频)检波,相移(或相位)检波等等


    展开全文
  • import mathimport numpy as npfrom numpy import array, sign, zerosfrom scipy.interpolate import interp1dimport scipy.signal#输入信号序列即可(list)def envelope_extraction(signal):s = signal.astype(float...

    import math

    import numpy as np

    from numpy import array, sign, zeros

    from scipy.interpolate import interp1d

    import scipy.signal

    #输入信号序列即可(list)

    def envelope_extraction(signal):

    s = signal.astype(float )

    q_u = np.zeros(s.shape)

    q_l = np.zeros(s.shape)

    #在插值值前加上第一个值。这将强制模型对上包络和下包络模型使用相同的起点。

    #Prepend the first value of (s) to the interpolating values. This forces the model to use the same starting point for both the upper and lower envelope models.

    u_x = [0,] #上包络的x序列

    u_y = [s[0],] #上包络的y序列

    l_x = [0,] #下包络的x序列

    l_y = [s[0],] #下包络的y序列

    # 检测波峰和波谷,并分别标记它们在u_x,u_y,l_x,l_中的位置。

    #Detect peaks and troughs and mark their location in u_x,u_y,l_x,l_y respectively.

    for k in range(1,len(s)-1):

    if (sign(s[k]-s[k-1])==1) and (sign(s[k]-s[k+1])==1):

    u_x.append(k)

    u_y.append(s[k])

    if (sign(s[k]-s[k-1])==-1) and ((sign(s[k]-s[k+1]))==-1):

    l_x.append(k)

    l_y.append(s[k])

    u_x.append(len(s)-1) #上包络与原始数据切点x

    u_y.append(s[-1]) #对应的值

    l_x.append(len(s)-1) #下包络与原始数据切点x

    l_y.append(s[-1]) #对应的值

    #u_x,l_y是不连续的,以下代码把包络转为和输入数据相同大小的数组[便于后续处理,如滤波]

    upper_envelope_y = np.zeros(len(signal))

    lower_envelope_y = np.zeros(len(signal))

    upper_envelope_y[0] = u_y[0]#边界值处理

    upper_envelope_y[-1] = u_y[-1]

    lower_envelope_y[0] = l_y[0]#边界值处理

    lower_envelope_y[-1] = l_y[-1]

    #上包络

    last_idx,next_idx = 0, 0

    k, b = general_equation(u_x[0], u_y[0], u_x[1], u_y[1]) #初始的k,b

    for e in range(1, len(upper_envelope_y)-1):

    if e not in u_x:

    v = k * e + b

    upper_envelope_y[e] = v

    else:

    idx = u_x.index(e)

    upper_envelope_y[e] = u_y[idx]

    last_idx = u_x.index(e)

    next_idx = u_x.index(e) + 1

    #求连续两个点之间的直线方程

    k, b = general_equation(u_x[last_idx], u_y[last_idx], u_x[next_idx], u_y[next_idx])

    #下包络

    last_idx,next_idx = 0, 0

    k, b = general_equation(l_x[0], l_y[0], l_x[1], l_y[1]) #初始的k,b

    for e in range(1, len(lower_envelope_y)-1):

    if e not in l_x:

    v = k * e + b

    lower_envelope_y[e] = v

    else:

    idx = l_x.index(e)

    lower_envelope_y[e] = l_y[idx]

    last_idx = l_x.index(e)

    next_idx = l_x.index(e) + 1

    #求连续两个切点之间的直线方程

    k, b = general_equation(l_x[last_idx], l_y[last_idx], l_x[next_idx], l_y[next_idx])

    #也可以使用三次样条进行拟合

    #u_p = interp1d(u_x,u_y, kind = 'cubic',bounds_error = False, fill_value=0.0)

    #l_p = interp1d(l_x,l_y, kind = 'cubic',bounds_error = False, fill_value=0.0)

    #for k in range(0,len(s)):

    # q_u[k] = u_p(k)

    # q_l[k] = l_p(k)

    return upper_envelope_y, lower_envelope_y

    def general_equation(first_x,first_y,second_x,second_y):

    # 斜截式 y = kx + b

    A = second_y-first_y

    B = first_x-second_x

    C = second_x * first_y - first_x * second_y

    k = -1 * A / B

    b = -1 * C / B

    return k, b

    展开全文
  • Labview 提取信号包络

    2018-11-23 21:34:09
    利用labview实现提取信号包络的例子。
  • Matlab绘制包络线可以通过hilbert或者envelope实现,先说hilbert Hilbert变换 Hilbert变换可用于形成解析信号。解析信号在通信领域中很有用,尤其是在带通信号处理中。工具箱函数hilbert计算实数输入序列x的...

    Matlab绘制包络线可以通过hilbert或者envelope实现,先说hilbert


    Hilbert 变换

    Hilbert 变换可用于形成解析信号。解析信号在通信领域中很有用,尤其是在带通信号处理中。工具箱函数 hilbert 计算实数输入序列 x 的 Hilbert 变换,并返回相同长度的复数结果,即 y = hilbert(x),其中 y 的实部是原始实数数据,虚部是实际 Hilbert 变换。在涉及到连续时间解析信号时,y 有时被称为解析信号。离散时间解析信号的关键属性是它的 Z 变换在单位圆的下半部分为 0。解析信号的许多应用都与此属性相关;例如,用解析信号避免带通采样操作的混叠效应。解析信号的幅值是原始信号的复包络。

     

    %% 基本参数A = 1; % 激励信号幅值N = 15; % cycle数,即激励信号波峰数fck = 100; % 激励中心频率 kHzfc = 100e3; % 激励信号中心频率,HzT0 = 1e-4; % 导波传播时间T = 4.0*T0; % 激励持续时长dt = 1/(20*fc)/2; % 时间步长,在最大步长基础上除以2t = [0:dt:T]'; % 时间序列V = A*[heaviside(t)-heaviside(t-N/fc)].*(1-cos(2*pi*fc*t/N)).*sin(2*pi*fc*t);h = hilbert(V); % Hilbert变换figureplot(t,V)

    图片

    •  
    %% 包络绘制figureplot(t,V)hold onplot(t,abs(h),'--','linewidth',1.5)hold onplot(t,-1*abs(h),'-.','linewidth',1.5)grid on

    图片


    envelope

    envelope返回输入序列x的上下包络线,作为其解析信号的大小。x的解析信号是利用希尔伯特实现的离散傅里叶变换得到的。这个函数首先移除x的均值,然后在计算包络线之后再把它加回来。如果x是一个矩阵,那么包络线对x的每一列都是独立的。

    ​​​​​​​

    % 信号生成t = 0:1/2000:2-1/2000;q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);plot(t,q)

    图片

    •  
    % 包络线绘制[up,lo] = envelope(q);figureplot(t,q)hold onplot(t,up,t,lo,'linewidth',1.5)legend('signal','上包络线','下包络线')hold off

    图片

    展开全文
  • 用来提取信号包络的matlab函数 ,觉得好的下来。如何对这个信号取包络,网上大多是hilbert取包络的方法,下面是一部分代码,后面如何取一个平滑的包络线
  • 行业分类-电信-利用对信号包络线处理测量流体流量的系统及方法.rar
  • 包络线matlab

    2014-06-25 14:28:45
    用matlab绘制包络线,亲测可用放心下载
  • 行业分类-电信-一种导波信号包络线的绘制方法.rar
  • 今天小编就为大家分享一篇Python 基于FIR实现Hilbert滤波器求信号包络详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • matlab 求一维信号的上下包络线

    千次阅读 2020-03-24 21:26:50
    clear all; clc; close all; fs=400; % 采样频率 N=400; % 数据长度 n=0:1:N-1; dt=1/fs; t=n*dt; % 时间序列 A=0.5; % 相位调制幅值 x=(1+... % 包络线 figure; plot(x);hold on ;plot(a); hold on; plot((-1)*a,'b')
  • 信号包络提取

    2019-05-01 11:51:03
    利用极大值、极小值提取包络,比较希尔伯特变换和数学形态法提取的优缺点,极大值极小值提取的方法提取的包络比较平滑,
  • matlab三次样条插值求数据包络线,可以直接跑
  • MATLAB源程序代码分享:MATLAB实现三次样条插值法求信号包络线
  • LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑...
  • Python-绘制曲线的包络线

    千次阅读 2021-11-17 19:14:29
    之前分享过matlab如何绘制包络线(传送门:Matlab绘制信号包络线),今天分享一下python如何实现 包络线基于scipy库,利用scipy.signal.hilbert 用法: scipy.signal.hilbert(x,N=None,axis=-1) 使用...
  • 链接:https://pan.baidu.com/s/1TFWEIpbR9yYbMyui7vFfmA 提取码:46iw
  • 包络线公式

    2021-06-29 09:57:09
    包络线公式08/04/2015本文...包络线指标用于创建买卖信号。可以指定公式用于计算包络线的百分比。公式详细信息语法Chart.DataManipulator.FinancialFormula(FinancialFormula.Envelopes,"Period,Shift","Price","Upp...
  • MATLAB信号包络的提取

    万次阅读 多人点赞 2020-10-16 15:52:46
    一、使用希尔伯特变换计算信号包络 1.函数调用 y=hilbert(x) 2.范例 clear all; clc; close all; n=-5000:20:5000; % 样点设置 % 程序第一部分:直接做做希尔伯特变换 N=length(n); % 信号样点数 nt=0:N-1; % ...
  • 18、 19、信道引起的失真 (1)码间串扰:传输特性不理想或多径引起 (2)频率偏移:主要由多普勒效应引起 多普勒效应会引起信号频谱展宽、中心频率偏移 (3)信号衰落:多径或信号自身变化引起 衰弱:信号包络因...
  • Hilbert变换从公式上看,是信号与1/(pi*t)的卷积。 此外,可以从“线性系统”,“调幅-调频”等角度思考,具体参考如下链接! --------------------------------------Hilbert变换理解-------------------------...
  • 摘要本文介绍了用于包络跟踪(ET,envelope tracking)应用的线性辅助混合电源转换器(linear assisted hybrid converter)中的高带宽和高压摆率c1ass-AB放大器的设计。在传输LTE信号时,ET已经变得普遍用于提高便携式...
  • 绘制信号包络matlab

    2012-11-13 15:05:24
    该程序用matlab语言根据计算绘制了信号包络
  • 包络线和包络谱计算程序

    千次阅读 2020-12-04 11:52:35
    希尔伯特变换获得信号时域的包络线;用fft变换获得包络谱%如何获得包络线?%信号经希尔伯特变换不能直接得到包络,设信号x的希尔伯特变换为y,则平方和%x.^2+y.^2(或者再开根号,直接取平方和的效果为好)才是信号x的...
  • matlab对信号包络的两种画法

    千次阅读 2019-11-27 13:18:34
    假设信号 %%%%连续信号 t=0:0.001:20; y=(1-0.7*cos(t)).*(cos(10*pi*t)+sin(9*pi*t)); plot(t,y); hold on 希尔伯特变换绘制包络 %%%%希尔伯特变换绘制包络 z1=abs(hilbert(y)); z2=-abs(hilbert(y)); plot(t,z1,t...
  • clearclcformat longl1=2400 ;l2=2000;l3= 2000; D=2; Vsaw=3488; w=(Vsaw/(4*D))*pi*2;frq=433;ww=(433)*pi*2;a=2; N=5; ws=10610; B=zeros(5,ws); C=zeros(1,ws);ref=0.0344;absorb=0.992...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,314
精华内容 925
关键字:

信号包络线是什么