📄 del.m
字号:
function [room_m,room_zero] = del(filename)
%过零率的求法
% 注意:sign(0) = 0;故先要找出零点;但是要注意如:[1,0,-1] 1-0=1 abs(0-1) =1
% (1 +1)/2 =1 故只有一个零点;
y = wavread(filename);
length_y = length(y);
sum_frame = fix(length_y/308);
y_turn = y';
for k = 1:sum_frame
temp_storeroom(k,:) = y_turn((1+(k-1)*308): k*308);
end
%加hamming窗
win_sequence = hamming(308)';
% 去除直流扰
for k = 1:sum_frame
temp_storeroom(k,:) = y_turn((1+(k-1)*308): k*308).*win_sequence;
average_m = (1/308) * sum(temp_storeroom(k,:));
temp_storeroom(k,:) = temp_storeroom(k,:) - average_m;
end
%进行语音带宽限制,使之在100~3400Hz内;
[B,A]=butter(5,[100/4000 3400/4000],'bandpass');
% filter_value_sequence = filter(B,A ,temp_storeroom);
for k = 1:sum_frame
filter_value_sequence(k,:) = filter(B,A,temp_storeroom(k,:));
end
% 限幅
for k = 1:sum_frame
for l =1:308
if filter_value_sequence(k,l) > 1
filter_value_sequence(k,l) = 1;
elseif filter_value_sequence(k,l) < -1
filter_value_sequence(k,l) = -1;
else
filter_value_sequence(k,l) = filter_value_sequence(k,l);
end
end
end
% 存储 judgeroom_mz
%clear;
load storeroom room_m room_zero;%room_zero ;
for k = 1:sum_frame
front_x = filter_value_sequence(k,1:307);
back_x = filter_value_sequence(k,2:308);
result_sf = sign(front_x);
result_sb = sign(back_x);
zeros = abs(result_sf -result_sb);
zeros_sum(k) = 1/2*sum(zeros);
if room_zero == []
room_zero = zeros_sum(k);
else
room_zero = [room_zero zeros_sum(k)];
end
end
%save storeroom room_zero;
%load storeroom room_m;
for k = 1:sum_frame
abs_x = abs(filter_value_sequence(k,:));
scope(k) = (1/308)*sum(abs_x);
if room_m == []
room_m = scope(k);
else
room_m = [room_m scope(k)];
end
end
save storeroom room_zero room_m;
%save storeroom room_m room_zero;
% 存储 judgeroom_mz
%save storeroom scope zeros_sum;
%load storeroom room_m room_zero;
%room_m = [room_m;scope];
%load judgeroom_z;
%room_zero = [room_zero;zeros_sum];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -