www.pudn.com > audioProcessingtoolbox.rar > frame2ashod.m


function ashod = frame2ashod(frameMat, order); 
% frame2volume: Frame (or frame matrix) to absolute sum of high-order difference (ASHOD) 
%	Usage: volume = frame2ashod(frameMat, order) 
%			frameMat: a column vector of a frame, or a matrix where each column is a frame 
%			order: order of difference 
% 
%	For example: 
%		waveFile='清華大學資訊系.wav'; 
%		[y, fs, nbits]=wavReadInt(waveFile); 
%		frameSize=256; overlap=0; 
%		frameMat=buffer2(y, frameSize, overlap); 
%		frameNum=size(frameMat, 2); 
%		ashod1=frame2ashod(frameMat, 1); 
%		ashod2=frame2ashod(frameMat, 2); 
%		ashod3=frame2ashod(frameMat, 3); 
%		ashod4=frame2ashod(frameMat, 4); 
%		time=(1:length(y))/fs; 
%		frameTime=((0:frameNum-1)'*(frameSize-overlap)+0.5*frameSize)/fs; 
%		subplot(2,1,1); plot(time, y); axis tight; ylabel('Amplitude'); title(waveFile); 
%		subplot(2,1,2); plot(frameTime, [ashod1; ashod2; ashod3; ashod4]', '.-'); axis tight; ylabel('ASHOD'); 
%		legend('order=1', 'order=2', 'order=3', 'order=4'); 
 
%	Roger Jang, 20070417 
 
if nargin<1, selfdemo; return; end 
if nargin<2, method=1; end 
 
[frameSize, frameNum]=size(frameMat); 
diffMat=frameMat; 
for i=1:order 
	diffMat=diff(diffMat); 
end 
ashod=sum(abs(diffMat)); 
 
% ====== Self demo 
function selfdemo 
waveFile='清華大學資訊系.wav'; 
[y, fs, nbits]=wavReadInt(waveFile); 
frameSize=256; overlap=0; 
frameMat=buffer2(y, frameSize, overlap); 
frameNum=size(frameMat, 2); 
ashod1=frame2ashod(frameMat, 1); 
ashod2=frame2ashod(frameMat, 2); 
ashod3=frame2ashod(frameMat, 3); 
ashod4=frame2ashod(frameMat, 4); 
time=(1:length(y))/fs; 
frameTime=((0:frameNum-1)'*(frameSize-overlap)+0.5*frameSize)/fs; 
subplot(2,1,1); plot(time, y); axis tight; ylabel('Amplitude'); title(waveFile); 
subplot(2,1,2); plot(frameTime, [ashod1; ashod2; ashod3; ashod4]', '.-'); axis tight; ylabel('ASHOD'); 
legend('order=1', 'order=2', 'order=3', 'order=4');