function [H,LL]= ItdBaseDecomp(x, n)
% 将信号x进行分解一层ITD分解
% H表示固有旋转分量
% LL表示基信号
%-----------------------------
len=length(x);
% n=(1:len);%原始数据点数序号,从0开始排序
if nargin == 1
n = 1:len;
end
[num,Index]=extrema_1(x);% 提取极值点,不区分极大值极小值
[indmin,indmax] = extr(x);% 区分极值大值和极小值
%衍生虚极值点,抑制端点效应
NBSYM = 1; %信号的左右两端分别添加一个极小值和极大值,1表示数量
if length(indmin) + length(indmax) < 3
H = [];
LL = x;
return
end
[tlmin,tlmax,zlmin,zlmax,trmin,trmax,zrmin,zrmax] = boundary_conditions(indmin,indmax,n,x,x,NBSYM);
if tlmin<tlmax
if trmin<trmax
newT=min(tlmin):max(trmax);%新的数据点区间,左右都增加了一个极小值和极大值
% 之所以从第2个极点开始,那是因为虚构点的时候把第一个点当做虚构极值点了
% 最后一个点也当做虚构极值点了,所以最后一个极值点也不取
newExtr=[tlmin tlmax n(Index(2:num-1)) trmin trmax];%左右两端的衍生极值点和原来极值点
newXk=[zlmin zlmax x(Index(2:num-1)) zrmin zrmax];%左右两端的衍生极值点和原来极值点对应的极值
else if trmin>trmax
newT=min(tlmin):max(trmin);
newExtr=[tlmin tlmax n(Index(2:num-1)) trmax trmin];
newXk=[zlmin zlmax x(Index(2:num-1)) zrmax zrmin];
end
end
else if tlmin>tlmax
if trmin<trmax
newT=tlmax:trmax;
newExtr=[tlmax tlmin n(Index(2:num-1)) trmin trmax];
newXk=[zlmax zlmin x(Index(2:num-1)) zrmin zrmax];
else if trmin>trmax
newT=tlmax:trmin;
newExtr=[tlmax tlmin n(Index(2:num-1)) trmax trmin];
newXk=[zlmax zlmin x(Index(2:num-1)) zrmax zrmin];
end
end
end
end
% 衍生后的极值点数newExtrNum,
newExtrNum=length(newExtr);
IndexNew = zeros(1, newExtrNum);
for i=1:newExtrNum
IndexNew(i)=find(newT==newExtr(i));%找出衍生后的极值点在newT区间中对应的序号
end
% 衍生后的新数据区间内的总点数newT_Num
newT_Num=length(newT);
L=zeros(1,newT_Num);
a=0.5;
k=1:newExtrNum-2;
L(IndexNew(k+1))=a.*(newXk(k)+((IndexNew(k+1)-IndexNew(k))./...
(IndexNew(k+2)-IndexNew(k))).*(newXk(k+2)-newXk(k)))+(1-a).*newXk(k+1);
LL=zeros(1, length(x));
ind = 1;
for k=2:newExtrNum-2
p=Index(k-1):Index(k);%原极值点之间的序号,映射到原区间上
temp=L(IndexNew(k))+((L(IndexNew(k+1))-L(IndexNew(k)))/(newXk(k+1)-newXk(k)))*(x(p)-newXk(k));
if k~=newExtrNum-2
temp(end)=[];
end
LL(ind:ind+length(temp)-1)=temp;%基线信号
ind = ind + length(temp);
end
H=x(n)-LL(n);
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
时间尺度分解(ITD)的matlab仿真源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 时间尺度分解(ITD)的matlab仿真源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。时间尺度分解(ITD)的matlab仿真源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。时间尺度分解(ITD)的matlab仿真源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。时间尺度分解(ITD)的matlab仿真源码+数据(课程设计).zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。时间尺度分解(ITD)的matlab仿真源码+数据(课
资源推荐
资源详情
资源评论
收起资源包目录
时间尺度分解(ITD)的matlab.zip (6个子文件)
时间尺度分解(ITD)的matlab
boundary_conditions.m 2KB
ItdBaseDecomp.m 2KB
Itd.m 648B
extrema_1.m 302B
extr.m 2KB
yuan.m 485B
共 6 条
- 1
资源评论
- SGXXXXXL2024-06-03内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
- m0_750287012024-04-25非常有用的资源,可以直接使用,对我很有用,果断支持!
猰貐的新时代
- 粉丝: 1w+
- 资源: 2585
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功