本帖最后由 papapap 于 2020-9-4 17:30 编辑
t=ceshi(:,1);v=ceshi(:,2);TPR=[];TPF=[];Vt1=[];VIjW1=[];
for i=2:length(v)
if v(i)>2 & v(i-1)<=2 %峰
i; %峰与阈值线交点起始位置
for j=i:length(v)
if v(j)>0 & v(j+1)<=0
j; %峰与零值线交点终止位置
break
end
end
ij=[t(i:j) v(i:j)]; %峰值区间
Vij=ij(:,2);
Vp=max(Vij); %峰值
Vpu=Vp.*0.9;
Vpl=Vp.*0.1;
Vpw=find(Vij==Vp);
tij=ij(:,1);
Vpwt=tij(Vpw);
VPW=find(t==Vpwt);
Vball=find(v(1:VPW)<=Vpl);
Vbw=Vball(end,1);
tb1=t(Vbw);
Veall=find(v(1:VPW)>=Vpu);
Vew=Veall(end,1);
te1=t(Vew);
tpr=abs(te1-tb1);
TPR=[TPR tpr];
if tpr<=0.41
ij;
VIj=ij(:,2);
TIj=ij(:,1);
VIjW=max(VIj);
VtW=find(VIj==VIjW);
Vt=TIj(VtW);
Vt1=[Vt1 Vt];
VIjW1=[VIjW1 VIjW];
end
end
end
a=[Vt1;
VIjW1];
a_temp1=[0 find(diff(a(1,:))>1.11) size(a,2)];
a_temp2=mat2cell(a,size(a,1),diff(a_temp1));
index_1=cellfun(@(x)find(x(2,:)==max(x(2,:))),a_temp2,'UniformOutput',false);
index=cellfun(@(x)length(x)==1&x(1)==1,index_1);
a_temp2(index)
ans =
[2x2 double]
其中包含的矩阵是[4.1 5.2; (此测试数据只得到一个矩阵,实际数据可能包含很多矩阵,
5 4] 所以大神的算法得按照这种不确定的矩阵个数来算)
每列数据[4.1;是通过ij= [4.0000 4.0000;
5] 4.1000 5.0000;
4.2000 3.0000;
4.3000 1.0000]计算第二列的最大值得到的
[5.2;是通过ij= [ 5.0000 3.0000;
4] 5.1000 3.0000;
5.2000 4.0000;
5.3000 3.0000;
5.4000 2.0000]计算第二列的最大值得到的
且这后面这两个较大的矩阵是通过原始矩阵一系列算法得到的
怎么在原始数据中(附件上传了),通过画图等方式将这两个矩阵ij在原始数据中标红(突出)显示
恳请各路神仙,能够将我的程序补齐O^O
2020-9-4 15:52 上传
点击文件名下载附件
447 Bytes, 下载次数: 0
测试数据