pcp.m
来自「自己定义了一种有关声音的特征」· M 代码 · 共 58 行
M
58 行
function [pcpdata,lodd,leven]=pcp(A,flag,fs)
%
% Chen Tingliang
% tingliangchen@163.com
% splab hit China
% 2006.5
NFFT=size(A,1);%the num of fft points
n=size(A,2);%the num of frame
Y=abs(fft(A,NFFT)).^2/NFFT;
pcpdata=zeros(24,n);
if nargin<=2
fs=8000*2;
end
fc1=261/2;
for j=1:n
for i=1:NFFT-1
t=round(24*log2(fs/NFFT*i/fc1));
if t<0
continue;
end
k=mod(t,24);
if k==0
k=24;
end
pcpdata(k,j)=pcpdata(k,j)+Y(i,j);
end
end
pcp=pcpdata;
if nargin>=2 %convert the pcp to a 0,1 matrics
for j=1:n
a=zeros(24,1);
if pcpdata(1,j)>=pcpdata(24,j)&pcpdata(1,j)>=pcpdata(2,j)
a(1)=1;
end
if pcpdata(24,j)>=pcpdata(1,j)&pcpdata(24,j)>=pcpdata(23,j)
a(24)=1;
end
for i=2:23
if pcpdata(i,j)>=pcpdata(i-1,j)&pcpdata(i,j)>=pcpdata(i+1,j)
a(i)=1;
end
end
pcpdata(:,j)=a;
end
if flag==1%compute lodd and leven
lodd=0;
leven=0;
a=sum(pcpdata,2);
for i=1:2:23
lodd=lodd+a(i);
end
for i=2:2:24
leven=leven+a(i);
end
end
end
save('pcp.mat');
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?