a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。...

a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。

转载于:https://www.cnblogs.com/cranx/p/9068245.html

function [spectruesub_enspeech] = spectruesub(testsignal) % 谱减法 testsignal=testsignal'; %-------------------------------参数定义--------------------------------- frame_len=256; %帧长 step_len=0.5frame_len; %分帧时的步长,相当于重叠50% wav_length=length(testsignal); R = step_len; L = frame_len; f = (wav_length-mod(wav_length,frame_len))/frame_len; k = 2f-1; % 帧数 h = sqrt(1/101.3434)hamming(256)'; % 汉宁窗乘以系数的原因是使其复合条件要求; testsignal = testsignal(1:fL); % 带噪语音与纯净语音长度对齐 win = zeros(1,fL); % 设定初始值; spectruesub_enspeech = zeros(1,fL); %-------------------------------分帧------------------------------------- for r = 1:k y = testsignal(1+(r-1)*R:L+(r-1)*R); % 对带噪语音帧间重叠一半取值; y = y.*h; % 对取得的每一帧都加窗处理; w = fft(y); % 对每一帧都作傅里叶变换; Y(1+(r-1)L:rL) = w(1:L); % 把傅里叶变换值放在Y中; end %-------------------------------估计噪声----------------------------------- NOISE= stationary_noise_evaluate(Y,L,k); %-------------------------------谱减法------------------------------------- for t = 1:k X = abs(Y).^2; S = X(1+(t-1)L:tL)-NOISE(1+(t-1)L:tL); % 含噪语音功率谱减去噪声功率谱; S = sqrt(S); A = Y(1+(t-1)L:tL)./abs(Y(1+(t-1)L:tL)); S = S.*A; s = ifft(S); s = real(s); spectruesub_enspeech(1+(t-1)*L/2:L+(t-1)*L/2) = spectruesub_enspeech(1+(t-1)*L/2:L+(t-1)*L/2)+s; % 在实域叠接相加; win(1+(t-1)*L/2:L+(t-1)*L/2) = win(1+(t-1)*L/2:L+(t-1)*L/2)+h; % 窗的叠接相加; end spectruesub_enspeech = spectruesub_enspeech./win; spectruesub_enspeech=spectruesub_enspeech'; end
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值