精华内容
下载资源
问答
  • MATLAB自带函数实现经验模式分解(EMD)MATLAB从2018a开始给出了内置函数来实现经验模式分解(EMD)与希尔伯特-黄变换(HHT),函数名分别是emd与hht,用户可以直接调用两个函数来实现经验模式分解以及与希尔伯特-黄变换。...

    MATLAB自带函数实现经验模式分解(EMD)

    MATLAB从2018a开始给出了内置函数来实现经验模式分解(EMD)与希尔伯特-黄变换(HHT),函数名分别是emd与hht,用户可以直接调用两个函数来实现经验模式分解以及与希尔伯特-黄变换。

    一、MATLAB函数库内的emd函数

    语法格式:

    1. [imf,residual] = emd(X)

    2. [imf,residual,info] = emd(X)

    3. [___] = emd(___,Name,Value)

    4. emd(___)

    解释:

    格式1. 返回输入序列x的本征模态函数(固有模态函数)imf和残差(剩余信号)residual。当x为一列向量时返回的Imf为一矩阵,imf矩阵中每一列存储着不同层分解的imf函数;返回的residual为一列向量。

    格式2. info用于返回附加信息,这些附加信息从IMFs和残差中获取。

    格式3. 使用一个或多个由Name,Value组合的参数来估计emd。指定可选的以逗号分隔的名称、值参数对,Name是参数名必须在引号内,Value是对应的值,可以按任何顺序指定多个名称和值参数Name1,Value1,...,NameN,ValueN. 

    例如: 'MaxNumIMF',5 。

    'SiftRelativeTolerance' — 柯西收敛准则

    对应的Value可指定为一个正数,Value缺省时为0.2。SiftRelativeTolerance是筛选停止标准之一,当相对公差小于SiftRelativeTolerance指定的Value值时,筛停止。

    'SiftMaxIterations' — 筛选迭代的最大次数

    对应的Value可指定为一个正整数,Value缺省时为100。SiftMaxIterations是筛选停止标准之一,当迭代次数大于siftmaxiteration指定的Value值时,筛选停止。

    'MaxNumIMF' —提取的最大imf个数

    对应的Value可指定为一个正整数,Value缺省时为10。MaxNumIMF是筛选停止标准之一,生成的imf数量等于MaxNumIMF时,分解停止。

    'MaxNumExtrema' — 残差信号极值的最大个数

    对应的Value可指定为一个正整数,Value缺省时为1。MaxNumExtrema是筛选停止标准之一,当极值个数小于MaxNumExtrema时,分解停止。

    'MaxEnergyRatio 信号残差能量比

    对应的Value可指定为一个标量,Value缺省时为20。MaxEnergyRatio是筛选停止标准之一,为信号初筛时的能量与平均包络能量之比。当前的能量比大于MaxNumExtrema时,分解停止。

    'Interpolation' — 包络线插值方法

    可选项有两种:

    'spline':x为光滑信号

    'pchip'x为非光滑信号

    'spline'采用三次样条插值法,'pchip'采用三次Hermite插值法。

    'Display' — 切换命令窗口中的信息显示

    命令窗口中生成的表显示了sift迭代次数、相对误差以及每个生成的IMF的sift停止准则,这个信息也包含在info中。当输入为('Display',1)或缺省时显示表,当输入为('Display',0)时隐藏表。

    格式4. 将原始信号、imf 和残差信号绘制在同一图形中。

    二、例子

    1. 由具有明显频率变化的正弦波组成的非平稳连续信号。以手提钻的振动或烟花声的非平稳连续信号为例。

    加载信号X以及采样频率fs。

    load('sinusoidalSignalExampleData.mat','X','fs');

    t = (0:length(X)-1)/fs;

    plot(t,X);

    xlabel('Time(s)');

    1d22a741da37e654960a77c39e739fb2.png

    混合信号包含具有不同幅值和频率的正弦波。

    为了创建希尔伯特谱图,需要信号的 IMFs。执行经验模式分解以计算信号的固有模式函数和残差。由于信号不平滑,指定'pchip'作Interpolation方法。

    [imf,residual,info] = emd(X,'Interpolation''pchip');

    Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  

    1      |        2     |     0.026352   |  SiftMaxRelativeTolerance

    2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance

    3      |        1     |     0.024838   |  SiftMaxRelativeTolerance

    4      |        2     |      0.05929   |  SiftMaxRelativeTolerance

    5      |        2     |      0.11317   |  SiftMaxRelativeTolerance

    6      |        2     |      0.12599   |  SiftMaxRelativeTolerance

    7      |        2     |      0.13802   |  SiftMaxRelativeTolerance

    8      |        3     |      0.15937   |  SiftMaxRelativeTolerance

    9      |        2     |      0.15923   |  SiftMaxRelativeTolerance

    分解停止是因为残差信号的极值数小于'MaxNumExtrema'。

    在命令窗口中生成的表指出了每个生成的IMF的筛选迭代次数,相对误差和筛选IMF的停止标准。此信息也包含在info。可以通过指定Display0来隐藏表。(emd(X,'Interpolation','pchip','Display',0))

    使用经验模态分解得到的imf分量创建Hilbert谱图。

    hht(imf,fs);

    fafdb4281b2638945c22891b45258e4c.png

    频率/时间图是一个稀疏图,垂直颜色条表示IMF中每个点的瞬时能量。该图表示从原始混合信号分解的每个分量的瞬时频谱。从图中可看到在1s处三个imf的频率有明显的变化。

    2. 可视化信号的剩余模态函数和本征模态函数 

    加载信号X以及采样频率fs。

    load('sinusoidalSignalExampleData.mat','X','fs');

    plot(X);

    06c10c68a7ec4d7def4504af187dd9f6.png

    emd(X,'Interpolation''pchip'); % 格式4. 将原始信号、imf 和残差信号绘制在同一图形中。

    Current IMF  |  #Sift Iter  |  Relative Tol  |  Stop Criterion Hit  

     1      |        2     |     0.026352   |  SiftMaxRelativeTolerance

     2      |        2     |    0.0039573   |  SiftMaxRelativeTolerance

     3      |        1     |     0.024838   |  SiftMaxRelativeTolerance

     4      |        2     |      0.05929   |  SiftMaxRelativeTolerance

     5      |        2     |      0.11317   |  SiftMaxRelativeTolerance

     6      |        2     |      0.12599   |  SiftMaxRelativeTolerance

     7      |        2     |      0.13802   |  SiftMaxRelativeTolerance

     8      |        3     |      0.15937   |  SiftMaxRelativeTolerance

     9      |        2     |      0.15923   |  SiftMaxRelativeTolerance

    分解停止是因为残差信号的极值数小于'MaxNumExtrema'。

    19dd18b4234059e68997df6f16358297.png

    生成具有原始信号,前3个IMF和残差的交互式图。右键单击图中的空白区域打开IMF选择器窗口。使用IMF选择器有选择地查看生成的IMF,原始信号和残差。

    62583e2c08f1c0e61561d0cdfb0fa197.png

     从列表中选择要显示的IMF。选择是否在图上显示原始信号和残差。

    63695b5f14cb353004c7adc69b968982.png

     选定的IMF会显示在图上。

    de4481cc10f52eb060d61a9f1ac9a220.png

    使用该图来可视化从原始信号分解而来的单个成分(单个IMF)以及残差。需要注意,残差是根据总的IMF计算而来,不会根据IMF选择器窗口中选择的IMF而改变。

    本文仅供参考,详细信息访问:

    https://ww2.mathworks.cn/help/signal/ref/emd.html?searchHighlight=emd&s_tid=doc_srchtitle

    展开全文
  • 利用matlab自带函数huffmandict() 写的哈夫曼码。可修改数组长度;利用随机数生成每个元素的概率。
  • 该算法为canny算子边缘检测,与matlab自带函数效果一致,程序可运行。有对比效果,并有很多注释。
  • matlab自带函数实现高斯滤波

    万次阅读 2015-06-26 18:14:31
    %matlab自带函数实现灰度图高斯滤波 clear close all img=imread('lena.bmp'); sigma=6;%标准差大小 window=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma H=fspecial('gaussian', win

    自己编写的高斯滤波已理解,可是matlab自带的高斯滤波函数却没有用过,这里记录一下。

    %matlab自带函数实现灰度图高斯滤波
    clear
    close all
    
    img=imread('lena.bmp');
    
    sigma=6;%标准差大小
    window=double(uint8(3*sigma)*2+1);%窗口大小一半为3*sigma
    
    H=fspecial('gaussian', window, sigma);%fspecial('gaussian', hsize, sigma)产生滤波模板
    %为了不出现黑边,使用参数'replicate'(输入图像的外部边界通过复制内部边界的值来扩展)
    img_gauss=imfilter(img,H,'replicate');
    
    figure
    subplot(2,1,1),imshow(img),title('输入图像');
    subplot(2,1,2),imshow(img_gauss),title('高斯滤波后'); 

    效果图:


    展开全文
  • 利用matlab自带函数对字符串进行Huffman编码

    1. 代码

    clear; clc;
    
    str = 'You have to believe in yourself. That is the secret of success.';
    
    %根据字符串str得到符号集symbols,并计算各集合元素的出现概率数组p
    len = length(str);
    unique_str = unique(str);
    unique_len = length(unique_str);
    
    symbols = cell(1, unique_len);
    p = zeros(1, unique_len);
    
    for i = 1:unique_len
        symbols{1,i} = unique_str(i);
        p(i) = numel(find(str==unique_str(i))) / len;
    end
    
    %根据符号集symbols和概率数组p计算Huffman编码词典
    [dict, avglen] = huffmandict(symbols, p);
    
    %计算平均码长
    code_len = zeros(unique_len, 1);
    for i = 1:unique_len
        code_len(i) = numel(cell2mat(dict(i,2)));
    end
    max_len = max(code_len);
    
    %打印字典表
    for i = 1:unique_len
        fprintf('`%s` : ', unique_str(i));
        fprintf('%d ', dict{i,2});
        fprintf('\n');
    end
    
    fprintf('平均码长 : %f\n', sum(p*code_len) );
    fprintf('信源熵 : %f\n', sum(p.*(-log2(p))) );
    fprintf('编码效率 : %f\n', 1/sum(p.*(-log2(p))) );
    
    %计算字符串最终编码长度
    enc_len = 0;
    for i = 1:len
        enc_len = enc_len + numel(dict{unique_str==str(i),2});
    end
    fprintf('编码前字符串总长度 : %d\n', numel(str));
    fprintf('编码后字符串二进制总长度 : %d\n', enc_len);
    fprintf('编码后字符串字节总长度(%d/8) : %d\n', enc_len, ceil(enc_len/8));
    
    %打印最终编码
    fprintf('编码结果 : ');
    for i = 1:len
        %fprintf('%s : ', str(i));
        fprintf('%d', dict{unique_str==str(i),2});
        fprintf(' ');
    end
    fprintf('\n');

    2. 输出结果

    ` ` : 0 0 0 
    `.` : 1 0 0 1 0 
    `T` : 1 0 0 1 1 1 
    `Y` : 1 0 0 1 1 0 
    `a` : 0 1 1 0 1 
    `b` : 0 1 0 0 0 0 1 
    `c` : 1 1 0 1 
    `e` : 0 0 1 
    `f` : 0 1 1 0 0 
    `h` : 1 1 0 0 
    `i` : 1 1 1 1 
    `l` : 0 1 1 1 1 
    `n` : 0 1 0 0 0 0 0 
    `o` : 1 0 0 0 
    `r` : 0 1 1 1 0 
    `s` : 1 0 1 
    `t` : 0 1 0 1 
    `u` : 1 1 1 0 
    `v` : 0 1 0 0 1 
    `y` : 0 1 0 0 0 1 
    平均码长 : 3.968254
    信源熵 : 3.927877
    编码效率 : 0.254590
    编码前字符串总长度 : 63
    编码后字符串二进制总长度 : 250
    编码后字符串字节总长度(250/8) : 32
    编码结果 : 100110 1000 1110 000 1100 01101 01001 001 000 0101 1000 000 0100001 001 01111 1111 001 01001 001 000 1111 0100000 000 010001 1000 1110 01110 101 001 01111 01100 10010 000 100111 1100 01101 0101 000 1111 101 000 0101 1100 001 000 101 001 1101 01110 001 0101 000 1000 01100 000 101 1110 1101 1101 001 101 101 10010 

    3. 讨论

      Huffman编码存在不唯一的问题。举个例子,对于字符串google进行Huffman编码可以是如下:

    这里写图片描述

      随意翻到有篇论文中探讨了这个问题,提出增加三条约束来使得Huffman编码唯一化:
      1)尽量减少Huffman树的层次数
      2)层次多的放在右分支
      3)先出现的现用于构造

    展开全文
  • matlab自带函数实现灰度共生矩阵,求取特征值 2018年04月05日 18:56:04 yukunjake 阅读数:794 ...

    matlab自带函数实现灰度共生矩阵,求取特征值

    举例:

        I = imread('D:\0.6-4.png');
        GLCM = graycomatrix(I,'Offset',[1 0;0 1]);
        stats = graycoprops(GLCM,{'contrast','homogeneity','correlation','energy'});


    1.   graycoprops(glcm, properties)  

    其中properties可以为对比度,相关性,能量,同质性。

    •  'Contrast' : 对比度。返回整幅图像中像素和它相邻像素之间的亮度反差。取值范围:[0,(GLCM行数-1)^2]。灰度一致的图像,对比度为0。
    • 'Correlation' : 相关。返回整幅图像中像素与其相邻像素是如何相关的度量值。取值范围:[-1,1]。灰度一致的图像,相关性为NaN。
    •  'Energy' : 能量。返回GLCM中元素的平方和。取值范围:[0 1]。灰度一致的图像能量为1。
    •  'Homogemeity' : 同质性。返回度量GLCM中元素的分布到对角线紧密程度。取值范围:[0 1]。对角矩阵的同质性为1。

    2.    graycomatrix(..., ..., ......)

    根据参数对的设定,返回一个或多个灰度共生矩阵。
    展开全文
  • MATLAB自带函数实现经验模式分解(EMD)MATLAB从2018a开始给出了内置函数来实现经验模式分解(EMD)与希尔伯特-黄变换(HHT),函数名分别是emd与hht,用户可以直接调用两个函数来实现经验模式分解以及与希尔伯特-黄变换。...
  • 查看MATLAB自带函数的源代码

    万次阅读 2014-03-03 21:38:40
    如何查看MATLAB自带函数的源代码   有时候可能需要把MATLAB程序移植成C程序或者C++程序,这对与通信行业的人来说是很常见的事情,事先利用MATLAB天生具备的优越可视化环境仿真,利用MATLAB丰富的自带行数完成复杂...
  • emd分解MATLAB自带函数

    千次阅读 2018-12-30 16:35:47
    matlab 2018开始自带了emd和hht函数,现将emd函数用法总结如下: [imf,residual,info]=emd(x,'Interpolation','pchip') %或者 emd(x,'Interpolation','pchip') 输入参数: x:原始信号向量 ...
  • matlab自带函数缺失问题的解决

    千次阅读 2019-05-26 23:45:38
    最近需要使用matlab自带的Heatmap函数进行绘图,结果将在实验室电脑可以运行的代码放到电脑上时显示找不到heatmap函数,查阅matlab帮助之后发现heatmap函数在2017a之后的版本才有,而自己是装的2016a。鉴于重装一次...
  • 使用MATLAB自带函数求解二次特征值问题二次特征值问题(QEP): 给定M,D,K∈CnxnM,D,K \in \mathbb{C^{nxn}},找到一个λ∈C\lambda \in \mathbb{C},以及一个非零向量x∈Cnx \in \mathbb{C^n},使得: Q(λ)x=...
  • 状态反馈_matlab自带函数place

    千次阅读 2020-04-07 19:18:35
    https://blog.csdn.net/JISANSAN/article/details/105370933中介绍了通过期望多项式计算状态反馈K的函数T2place,其实matlab自带状态反馈设计的函数place,不同的是直接用期望的极点进行计算,在不同的情形下可能...
  • 如何查看MATLAB自带函数的源代码

    千次阅读 2012-10-16 09:07:11
    如何查看MATLAB自带函数的源代码  MATALB属于半开源软件,其中很多函数可以通过“open/edit/type+filename”命令进行编辑和查看源代码。但是有一些函数仅仅可以找到它的帮助文档,却无法看到具体的源代码...
  • NSGA-2 MATLAB自带函数.

    2017-11-27 11:14:46
    NSGA-2是目前最流行的多目标进化算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准。
  • 如何查看matlab自带函数源代码

    千次阅读 2019-04-20 10:52:08
    1、在命令窗口中输入:type 函数名(例如type rgb2gray等),就会在命令窗口出现该函数的相关说明及源代码;2、在命令窗口中输入:open 函数名(例如open rgb2gray等),就会打开该函数的m文件;3、在命令窗口中输入...
  • MATLAB从2018a开始给出了内置函数来实现经验模式分解(EMD)与希尔伯特-黄变换(HHT),函数名分别是emd与hht,用户可以直接调用两个函数来实现经验模式分解以及与希尔伯特-黄变换。一、MATLAB函数库内的emd函数语法格式...
  • 也是最近想要研究一下图像细化,又不想用matlab自带函数库,就查找了一些资料去整图像细化的原理,看了一些博客写的针布戳。也就记录一下了。 原理 其实也就在要细化的目标左右两边分别满足四个条件,让目标向着...
  • matlab自带的biography(产生一个句柄) 可以用于画图 R=[1 1 2 4 1 2 3 3 5 7 3 4 5 6 7 8]; % 起始节点编号 C=[2 3 3 3 4 5 5 6 6 6 7 7 8 8 8 7]; % 起始节点可连接的节点编号 W=[2 8 6 7 1 1 5 1 3 4 2 9 8...
  • 知乎视频​www.zhihu.com好久没有更新专栏了, 因为最近在忙着学习信号处理, 刚研究snr(snr是用来计算信噪比的函数)源码的时候, 发现了一个重大"陷阱", 然后翻看snr的文档, 看到文档里面有明确指明了这个"陷阱".(这...
  • 决策树--matlab自带函数

    万次阅读 2016-07-13 12:22:00
    已知训练数据和训练数据类,获得决策树模型: t=treefit(train_X,y);%train_X的行数为样本数,列数为特征数;y的行数为样本数,1列表征类; t=classregtree(train_X,y):%用法与...关于决策树的相关函数目前多放在cla
  • MATLAB 自带函数源代码的查找

    千次阅读 2014-02-28 15:27:24
    有时候可能需要把MATLAB程序移植成C程序或者C++程序,这对与通信行业的人来说是很常见的事情,事先利用MATLAB天生具备的优越可视化环境仿真,利用MATLAB丰富的自带行数完成复杂算法的仿真,以比较不同算法之间的效率...
  • matlab自带函数实现BP神经网络

    千次阅读 2017-04-20 22:48:23
    利用feedforwardnet函数建立BP神经网络,十分简单:clear; load input_white.mat; load output_white.mat; input=input_white'; %转置为F*N矩阵,F为特征的个数,N为样本的个数 output=output_white'; %[norminput,...
  • % matlab自带图片 hist(a(:),10); % 分成十个bin效果图:[N,X] = hist(...) also returns the position of the bin centers in X.[no,xo] = hist(a(:),10);no是每个bin对应的y值xo是每个bin的中心位置x值...
  • 个人环境是使用matlab2017b 该公式计算欧拉角有个要求,必须是3x3的旋转矩阵(尝试过4x4的计算不了)。matlab自带的由旋转矩阵计算欧拉角公式是,rotm2eul(),可以指定旋转顺序,否则默认旋转顺序为ZYX. ...
  • clear all;close all;clc; I = imread('rice.png');...利用膨胀和腐蚀提取图像边缘 matlab实现 https://blog.csdn.net/Ibelievesunshine/article/details/100554718 matlab 提取图像轮廓 (图像边缘提取) ...
  • %【1】仿真泊松分布的概率密度函数 https://en.wikipedia.org/wiki/Poisson_distribution xi = [1:100]; f = func(10, xi); plot(xi,f,'r*') %【2】进行泊松分布概率密度数据拟合 para0 = [20]; %参数初始值 para =...

空空如也

空空如也

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

matlab自带函数

matlab 订阅