资源简介
LMD局域均值分解matlab测试程序
写的不完善,还存在没有去处骑行波的问题
拿出来分享是希望有人能够完善该程序
代码片段和文件信息
function [envmin envmaxenvmoyindminindmaxindzer] = envelope(txINTERP)
%computes envelopes and mean with various interpolations
NBSYM = 2; % 边界延拓点数
DEF_INTERP = ‘spline‘;
if nargin < 2
x = t;
t = 1:length(x);
INTERP = DEF_INTERP;
end
if nargin == 2
if ischar(x)
INTERP = x;
x = t;
t = 1:length(x);
end
end
if ~ischar(INTERP)
error(‘interp parameter must be ‘‘linear‘‘‘‘ ‘‘cubic‘‘ or ‘‘spline‘‘‘)
end
if ~any(strcmpi(INTERP{‘linear‘‘cubic‘‘spline‘}))
error(‘interp parameter must be ‘‘linear‘‘‘‘ ‘‘cubic‘‘ or ‘‘spline‘‘‘)
end
if min([size(x)size(t)]) > 1
error(‘x and t must be vectors‘)
end
s = size(x);
if s(1) > 1
x = x‘;
end
s = size(t);
if s(1) > 1
t = t‘;
end
if length(t) ~= length(x)
error(‘x and t must have the same length‘)
end
lx = length(x);
[indminindmaxindzer] = extr(xt);
%boundary conditions for interpolation
[tmintmaxxminxmax] = boundary_conditions(indminindmaxtxNBSYM);
% definition of envelopes from interpolation
envmax = interp1(tmaxxmaxtINTERP);
envmin = interp1(tminxmintINTERP);
if nargout > 2
envmoy = (envmax + envmin)/2;
end
function [tmintmaxxminxmax] = boundary_conditions(indminindmaxtxnbsym)
% computes the boundary conditions for interpolation (mainly mirror symmetry)
lx = length(x);
% 判断极值点个数
if (length(indmin) + length(indmax) < 3)
error(‘not enough extrema‘)
end
% 插值的边界条件
if indmax(1) < indmin(1)% 第一个极值点是极大值
if x(1) > x(indmin(1))% 以第一个极大值为对称中心
lmax = fliplr(indmax(2:min(endnbsym+1)));
lmin = fliplr(indmin(1:min(endnbsym)));
lsym = indmax(1);
else% 如果第一个采样值小于第一个极小值,则将认为该值是一个极小值,以该点为对称中心
lmax = fliplr(indmax(1:min(endnbsym)));
lmin = [fliplr(indmin(1:min(endnbsym-1)))1];
lsym = 1;
end
else
if x(1) < x(indmax(1))% 以第一个极小值为对称中心
lmax = fliplr(indmax(1:min(endnbsym)));
lmin = fliplr(indmin(2:min(endnbsym+1)));
lsym = indmin(1);
else% 如果第一个采样值大于第一个极大值,则将认为该值是一个极大值,以该点为对称中心
lmax = [fliplr(indmax(1:min(endnbsym-1)))1];
lmin = fliplr(indmin(1:min(endnbsym)));
lsym = 1;
end
end
% 序列末尾情况与序列开头类似
if indmax(end) < indmin(end)
if x(end) < x(indmax(end))
rmax = fliplr(indmax(max(end-nbsym+11):end));
rmin = fliplr(indmin(max(end-nbsym1):end-1));
rsym = indmin(end);
else
rmax = [lxfliplr(indmax(max(end-nbsym+21):end))];
rmin = fliplr(indmin(max(end-nbsym+11):end));
rsym = lx;
end
else
if x(end) > x(indmin(end))
rmax = fliplr(indmax(max(end-nbsym1):end-1));
rmin = fliplr(indmin(max(end-nbsym+11):end));
rsym = indmax(end);
else
rmax = fliplr(indmax(max(end-nbsym+11):end));
rmin = [lxfliplr(indmin(max(end-nbsym+21):end))];
rsym = lx;
end
end
% 将序列根据对称中心,镜像到两边
tlmin = 2*t(lsym)-t(lmin);
tlmax = 2*t(lsym)-t(lmax);
trmin = 2*t(rsym)-t(rmin);
trmax = 2*t(rsym)-t(rmax);
% in case symmetrized parts do not exte
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6158 2010-12-14 19:35 lmd\envelope.m
文件 5517 2011-01-15 21:17 lmd\example_lmd.asv
文件 5514 2011-01-15 21:20 lmd\example_lmd.m
文件 117 2010-12-15 21:35 lmd\example_shunpin.m
文件 1246 2010-12-15 23:25 lmd\extrpoint.asv
文件 1689 2011-01-15 15:19 lmd\hua_baoluo.m
文件 687 2011-01-15 08:26 lmd\hua_fft1.m
文件 1126 2011-01-13 16:29 lmd\hua_xihua.m
文件 58 2010-12-15 23:23 lmd\li
文件 945 2010-12-19 11:39 lmd\lmd1.asv
文件 952 2010-12-19 11:42 lmd\lmd1.m
文件 1221 2011-01-15 22:32 lmd\lmd2.asv
文件 1184 2011-01-15 22:34 lmd\lmd2.m
文件 1788 2011-01-15 21:38 lmd\lmd2_example.m
文件 1914 2010-12-16 10:45 lmd\move.asv
文件 1914 2010-12-16 10:46 lmd\move.m
文件 96 2010-12-15 23:40 lmd\nengliang.m
文件 185 2010-12-15 23:44 lmd\pos.m
文件 1216 2010-12-15 23:43 lmd\position.m
文件 1146 2010-12-16 11:00 lmd\shunpin.asv
文件 1157 2010-12-16 11:04 lmd\shunpin.m
文件 971 2010-12-16 10:56 lmd\smove.m
文件 706 2010-12-17 08:13 lmd\test.m
文件 1239 2011-01-15 22:21 lmd\testttt.m
文件 416 2010-12-15 23:57 lmd\tiaozheng.m
文件 6559 2011-01-15 21:22 lmd\zhaochun1.m
目录 0 2011-03-14 11:00 lmd
----------- --------- ---------- ----- ----
45721 27
............此处省略0个文件信息
相关资源
- LMDMATLAB代码
- lmd算法MATLAB仿真程序
- 非局部均值去噪matlab源码
- matlab实现的图像非局部均值滤波
- 局部均值分解Local Mean Decomposition算法
- 非局部均值 图像去噪(matlab)
- 快速非局部均值滤波算法
- 图像恢复:快速非局部均值滤波
- 非局部均值图像去噪的原始算法
- 局部均值分解——LMD
- 局部均值分解LMD的MATLAB代码,带例程
- LMD matlab程序
- matlab 自己编写的图像图像缩小代码(
- elmd 在lmd中加入白噪声对信号进行分析
- LMD 改进的lmd算法
- LMD LMD分解方法
- lmd 对信号进行局部均值分解
- 基于非局部均值的图象去噪
- 原汁原味的LMD的matlab程序
- 局部均值分解法LMDMATLAB代码,亲测可
评论
共有 条评论