📄 waveout.m
字号:
function puls=waveout(wav,segoffset,len,singalval)
% 参数意义:wav 源文件,offset 分段起始,len 分段终止点,singalval 信号限;
% puls 输出脉冲群
offset=segoffset;
basewid=20;
expand=1;
wid=basewid;
swnd=wav(offset:wid);
wcnt=0;subpuls=ones(fix(len/200),2);
fprintf('\n\nCalculating.................\n\n\n');
while 1
while 1
[peak,htime]=max(swnd);
[valley,ltime]=min(swnd);
if htime<ltime,temp=ltime;ltime=htime;htime=temp;end
hp=peak-valley;
if hp>2*singalval
expand=1;
if wid==basewid,break,end
else
expand=expand+1;
offset=offset+wid;
end
wid=basewid*expand;
if(offset+wid>len)
expand=1;wid=basewid;
end
if ((offset+wid)>=len),break,end
swnd=wav(offset:offset+wid);
end
htime=offset+htime-1;
ltime=offset+ltime-1; % Primary Oriented
if ((htime+basewid)>=len),break,end
temp=wav(ltime:htime+basewid);
[peak,htime]=max(temp);
[valley,ltime]=min(temp);
if htime<ltime,temp=ltime;ltime=htime;htime=temp;end
htime=offset+htime;
ltime=offset+ltime;
wcnt=wcnt+1;
subpuls(wcnt,1)=ltime;subpuls(wcnt,2)=htime;
offset=htime;
if(offset+wid)>len,break,end
swnd=wav(offset:offset+wid);
end
i=1;j=1;
puls(1,1)=subpuls(1,1);puls(1,2)=subpuls(1,2);puls(1,3)=0;
while wcnt>1
if (subpuls(i+1,1)-subpuls(i,2))<2006
puls(j,2)=subpuls(i+1,2);
else
j=j+1;
puls(j,1)=subpuls(i+1,1);
puls(j,2)=subpuls(i+1,2);
puls(j,3)=puls(j,1)-puls(j-1,2);
end
i=i+1;
if i==wcnt,break;end
end
for i=1:j
ltime=puls(i,1);htime=puls(i,2);
if(ltime-2)>0
temp=wav((ltime-2):(htime+2));
else
temp=0;
break;
end
peak=max(temp);valley=min(temp);
puls(i,4)=peak-valley;
end
if temp==0
disp('数据文件可能有错,请将门限调低再试一次!');
else
disp(['------Seg【',num2str(segoffset),',',num2str(len),'】---Finished!!!']);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -