ÓïÒôÐźŴ¦Àí,»ùÓÚMATLABµÄ×Ó´ø±àÂëʵÏÖ ÏÂÔØ±¾ÎÄ

Ò»£º×Ó´ø±àÂë

1.×Ó´ø±àÂëÊ×ÏȽ«ÊäÈëÐźŷָî³É¼¸¸ö²»Í¬µÄƵ´ø·ÖÁ¿£¬È»ºóÔÙ·Ö±ð½øÐбàÂ룬ÕâÀà±àÂ뷽ʽ³ÆÎªÆµÓò±àÂë¡£ 2.°ÑÓïÒôÐźŷֳÉÈô¸É×Ó´ø½øÐбàÂëÖ÷ÒªÓÐÁ½¸öÓŵ㣺 (1).Èç¹û¶Ô²»Í¬µÄ×Ó´øºÏÀí·ÖÅä±ÈÌØÊý£¬¿ÉÒÔ¿ØÖƸ÷×Ó´øµÄÁ¿»¯µçƽÊýÄ¿£¬ÒÔ¼°ÏàÓ¦µÄÖØ½¨ÐźŵÄÁ¿»¯Îó²î·½²îÖµ£¬ÒÔ»ñµÃ¸üºÃµÄÖ÷¹ÛÌýÒôÖÊÁ¿¡£

(2).¸÷×Ó´øµÄÁ¿»¯ÔëÉùÏ໥¶ÀÁ¢£¬±»Êø¸¿ÔÚ×Ô¼ºµÄ×Ó´øÄÚ£¬²»Ó°ÏìÆäËü×Ó´øµÄÁ¿»¯ÔëÉù¡£

3.Ó°Ïì×Ó´ø±àÂëЧÂʵÄÒòÊý

×Ó´øÊýÄ¿¡¢×Ó´ø»®·Ö¡¢±àÂë²ÎÊý¡¢×Ó´øÖбÈÌØµÄ·ÖÅ䡢ÿÑùÖµ±àÂë±ÈÌØ¡¢´ø¿í¡£ 4.·ÖÀà

£¨1£©µÈ´ø¿í×Ó´ø±àÂë

¸÷×Ó´øµÄ´ø¿íÊÇÏàͬµÄ£¬ÆäÓŵãÊÇÒ×ÓÚÓ²¼þʵÏÖ£¬±ãÓÚÀíÂÛ·ÖÎö¡£

ÆäÖУ¬k= 1, 2, 3 ¡­, mΪ×Ó´ø×ÜÊý£¬B±àÂëÐźÅ×Ü´ø¿í

£¨2£©±ä´ø¿í×Ó´ø±àÂë

¸÷×Ó´ø´ø¿íÊDz»Í¬µÄ£¬³£ÓõÄ×Ó´ø»®·ÖÊÇÁî¸÷×Ó´ø¿í¶ÈËæKµÄÔö¼Ó¶øÔö¼Ó£¨µÍƵ¶Î×Ó´ø´ø¿íÕ­£¬¸ßƵ¶Î¿í£©£¬ÆäÓŵãÊǶԲ»Í¬µÄ×Ó´ø·ÖÅäµÄ±ÈÌØÊý²»Í¬£¬ÄÜ»ñµÃºÜºÃµÄÖÊÁ¿¡£

¶þ£ºmatlabʵÏÖ

1.Ö÷ÒªÊÇʹÓ÷ǶԳÆÂ˲¨Æ÷×éÀ´ÊµÏÖÓïÒôÐźŵÄ×Ó´ø·Ö½âºÍºÏ²¢¡£

2.¹Ø¼ü£ºÕë¶ÔÓïÒôÐÅºÅµÄÆµÆ×Éè¼ÆÓëÖ®ÏàÊÊÓ¦µÄÊ÷ÐÎÂ˲¨Æ÷×é¡£

3.±àÂë²ÉÓÃuÂÉpcm±àÂë¡£ ½éÉÜ£º

? ±¾±à³ÌËùÉè¼ÆµÄÊ÷ÐνṹÂ˲¨Æ÷×飬ÊÇÓÉÁ½Í¨µÀµÄÕý½»¾µÏñÂ˲¨Æ÷×éͨ¹ý¼¶Áª»ò²¢Áª×齨¶ø³ÉµÄ¡£

? ²ÉÓÃÕý½»¾µÏóÂ˲¨Æ÷£¨QMF£¬quandrature mirror filter£©À´»®·ÖƵ´ø£¬»ìµüЧӦÔÚ×îºóºÏ³Éʱ¿ÉÒÔµÖÏû ? »ìµüÊ§Õæ£ºÕâÊÇÓÉÓÚ·ÖÎöÂ˲¨Æ÷×éºÍ×ÛºÏÂ˲¨Æ÷×éµÄƵ´ø²»ÄÜÍêÈ«·Ö¿ª¼°x£¨n£©µÄ³éÑùƵÂÊfs²»ÄÜ´óÓÚÆä×î¸ßƵÂʳɷֵÄm±¶ËùÖ¡£

?

Á½Í¨µÀµÄÂ˲¨Æ÷×é

Á½Í¨µÀµÄÂ˲¨Æ÷×é

Á½Í¨µÀµÄÂ˲¨Æ÷×éµÄ·ùÆµÌØÐÔ

Á½Í¨µÀµÄÕý½»¾µÏñÂ˲¨Æ÷×éµÄ·ùÆµÌØÐÔ

? £¨´ÓÆµÆµÌØÐÔ¿ÉÒÔ¿´³ö²ÉÓÃÕý½»¾µÏóÂ˲¨Æ÷À´»®·ÖƵ´ø£¬»ìµüЧӦÔÚ×îºóºÏ³Éʱ¿ÉÒÔµÖÏû£©

ԭʼÓïÒôy

ÌáȡһͨµÀ ¿¹»ìµþÂ˲¨ ·ÖÎöÂ˲¨Æ÷×é UÂÉpcm±àÂë ´¦ÀíºóÓïÒôy_he ¡¤ ÖØ¹¹Â˲¨Æ÷×é UÂÉpcm±àÂë ÕûÌå¿òͼ

Ƶ´ø·Ö½â£¨Ö÷Òª£©

(ϸ½matlabÔ´³ÌÐòÓïÒôΪwav¸ñʽ×Ô¼ºÂ¼Òô)

%Ö÷³ÌÐò

clear all ;close all;clc;

N=4096*50;%²É¼¯µãÊý

[y,fs,bits]=wavread('tangshi',N); %¶ÁÈ¡ÒôƵÐÅÏ¢£¨Ë«ÉùµÀ£© Fs=fs ; ts = 1/fs;

%½ö´¦Àí1ͨµÀÐźÅ

y1=y(:,1)' ;%the signal of channel one

%y2=y(:,2) ;%the signal of channel two

t=0:1/fs:(N-1)/fs;%time %ԭʼÓïÒôÐźŶÁÈ¡

sound(y1,fs); %ԭʼÓïÒôÐźŻ­Í¼ figure(1) ;

subplot(2,1,1) ;

plot(t,y1) ;%1ͨµÀÐźÅ

title('ԭʼÐźÅy1') ; %Ô¤Â˲¨

%ÓïÒôÐźÅÔ¤´¦ÀíÈ˶ú¿Éʶ±ð·¶Î§£¨300~3400£©£¬Òò´Ë¶àÓÚ´ËÆµÂʵÄÐźſÉÒÔÂ˵ô¶ø²»Óô«Êä

[y1_yu,fs_yu]=pre_process(y1,fs) ;

subplot(2,1,2) ;

plot(t(1:fs/fs_yu:3*floor(length(t)/3)),y1_yu) ;%Â˲¨ºóµÄÐźÅʱÓò²¨ÐÎ

title('Ô¤Â˲¨ºóµÄÐźÅy1_yu') ;

%¶ÔÉÏÃæÁ½¸öÐźŽøÐÐÆµÆ×·ÖÎö Y1 = fft(y1); Y1_YU = fft(y1_yu); %»­³öͼÐÎ figure(2) ; subplot(2,1,1) dfs= fs/length(Y1);

H1 = abs(Y1(1:length(Y1)/2)); f1 = 0:dfs:fs-dfs; f1 = f1(1:length(Y1)/2); plot(f1,H1)

axis([0,10000,0,max(abs(fftshift(Y1)))]) title('ԭʼÐÅºÅÆµÆ×y1')

subplot(2,1,2)

H2 = abs(Y1_YU(1:length(Y1_YU)/2)); f2=0:dfs:fs_yu-dfs; f2 = f2(1:length(Y1_YU)/2); plot(f2,H2)

axis([0,10000,0,max(abs(fftshift(Y1_YU)))])

title('¿¹»ìµþÂ˲¨ºóy1_yuµÄÐÅºÅÆµÆ×£¬fl=300Hz£¬fh=3400Hz') %¿¹»ìµþÂ˲¨ºóÓïÒôÐźŶÁÈ¡

sound(y1_yu,fs_yu); %·Ö½â

[yu1,yu2]=fenjie(y1_yu,fs_yu) ; %y1 %2´Î·Ö½â

[y1_1,y1_2]=fenjie(yu1,fs_yu) ; %3´Î·Ö½â

[y1_11,y1_12]=fenjie(y1_1,fs_yu) ; [y1_21,y1_22]=fenjie(y1_2,fs_yu) ; %y2 %2´Î·Ö½â

[y2_1,y2_2]=fenjie(yu2,fs_yu) ; %3´Î·Ö½â

[y2_11,y2_12]=fenjie(y2_1,fs_yu) ; [y2_21,y2_22]=fenjie(y2_2,fs_yu) ;

%·Ö½âͼʾ figure

subplot(4,1,1) plot(f2,H2);

title(['ԭʼÐÅºÅÆµÆ×£¬fs=',num2str(fs_yu)])

subplot(4,2,3) hy1 = abs(fft(yu1)); fhy1=0:dfs:fs_yu/2-dfs; fhy1 = fhy1(1:length(hy1)/2); plot(fhy1,hy1(1:length(hy1)/2)) title(['1´Î·Ö½â£¬fs=',num2str(fs_yu/2)])

subplot(4,2,4) hy2 = abs(fft(yu2)); fhy2=0:dfs:fs_yu/2-dfs; fhy2 = fhy2(1:length(hy2)/2); plot(fhy2,hy2(1:length(hy2)/2))

subplot(4,4,9) hy1_1 = abs(fft(y1_1)); fhy1_1=0:dfs:fs_yu/4-dfs;

fhy1_1 = fhy1_1(1:length(hy1_1)/2); plot(fhy1_1,hy1_1(1:length(hy1_1)/2))

title(['2´Î·Ö½â£¬fs=',num2str(fs_yu/4)])

subplot(4,4,10) hy1_2 = abs(fft(y1_2)); fhy1_2=0:dfs:fs_yu/4-dfs;

fhy1_2 = fhy1_2(1:length(hy1_2)/2); plot(fhy1_2,hy1_2(1:length(hy1_2)/2))

subplot(4,4,11) hy2_1 = abs(fft(y2_1)); fhy2_1=0:dfs:fs_yu/4-dfs;

fhy2_1 = fhy2_1(1:length(hy2_1)/2); plot(fhy2_1,hy2_1(1:length(hy2_1)/2))

subplot(4,4,12) hy2_2 = abs(fft(y2_2)); fhy2_2=0:dfs:fs_yu/4-dfs;

fhy2_2 = fhy2_2(1:length(hy2_2)/2); plot(fhy2_2,hy2_2(1:length(hy2_2)/2))

subplot(4,8,25)

hy1_11 = abs(fft(y1_11));

fhy1_11=0:dfs:fs_yu/8-dfs;

fhy1_11 = fhy1_11(1:length(hy1_11)/2); plot(fhy1_11,hy1_11(1:length(hy1_11)/2)) title(['3´Î·Ö½â£¬fs=',num2str(fs_yu/8)])

subplot(4,8,26)

hy1_12 = abs(fft(y1_12)); fhy1_12=0:dfs:fs_yu/8-dfs;

fhy1_12 = fhy1_12(1:length(hy1_12)/2); plot(fhy1_12,hy1_12(1:length(hy1_12)/2))

subplot(4,8,27)

hy1_21 = abs(fft(y1_21)); fhy1_21=0:dfs:fs_yu/8-dfs;

fhy1_21 = fhy1_21(1:length(hy1_21)/2); plot(fhy1_21,hy1_21(1:length(hy1_21)/2))

subplot(4,8,28)

hy1_22 = abs(fft(y1_22)); fhy1_22=0:dfs:fs_yu/8-dfs;

fhy1_22 = fhy1_22(1:length(hy1_22)/2); plot(fhy1_22,hy1_22(1:length(hy1_22)/2))

subplot(4,8,29)

hy2_11 = abs(fft(y2_11)); fhy2_11=0:dfs:fs_yu/8-dfs;

fhy2_11 = fhy2_11(1:length(hy2_11)/2); plot(fhy2_11,hy2_11(1:length(hy2_11)/2))

subplot(4,8,30)

hy2_12 = abs(fft(y2_12)); fhy2_12=0:dfs:fs_yu/8-dfs;

fhy2_12 = fhy2_12(1:length(hy2_12)/2); plot(fhy2_12,hy2_12(1:length(hy2_12)/2))

subplot(4,8,31)

hy2_21 = abs(fft(y2_21)); fhy2_21=0:dfs:fs_yu/8-dfs;

fhy2_21 = fhy2_21(1:length(hy2_21)/2); plot(fhy2_21,hy2_21(1:length(hy2_21)/2))

subplot(4,8,32)

hy2_22 = abs(fft(y2_22)); fhy2_22=0:dfs:fs_yu/8-dfs;

fhy2_22 = fhy2_22(1:length(hy2_22)/2); plot(fhy2_22,hy2_22(1:length(hy2_22)/2))

%PCM±àÂë pcm1 = upcm(y1_11); pcm2 = upcm(y1_12); pcm3 = upcm(y1_21); pcm4 = upcm(y1_22); pcm5 = upcm(y2_11); pcm6 = upcm(y2_12); pcm7 = upcm(y2_21); pcm8 = upcm(y2_22); Tcode½âÂë

dpcm1 = dupcm(pcm1,8); dpcm2 = dupcm(pcm2,8); dpcm3 = dupcm(pcm3,8); dpcm4 = dupcm(pcm4,8); dpcm5 = dupcm(pcm5,8); dpcm6 = dupcm(pcm6,8); dpcm7 = dupcm(pcm7,8); dpcm8 = dupcm(pcm8,8); %ÐźŵĺϳÉ

y_he=hebing8(y1_11,y1_12,y1_21,y1_22,y2_11,y2_12,y2_21,y2_22) ;%µÍƵÐźÅ8ͨµÀºÏ³É figure ;

subplot(2,1,1) ;

plot(y1_yu) ;

title('Ô¤Â˲¨ºóµÄÐźÅy1_yu') ; subplot(2,1,2)

plot(y_he) ;%ºÏ³ÉºóµÄÐźÅ

title('ÐÅË޶˻ָ´ÐźÅy_he') ; wavwrite(y_he,fs_yu,16,'sound.wav') % sound(y,fs) % sound(y1,fs) % sound(y1_yu,fs_yu) sound(y_he,fs_yu)

%¿¹»ìµüÂ˲¨Æ÷

function [y1,fs_yu] = pre_process(y,Fs) %½µµÍ²ÉÑùÂÊ£¬³éÈ¡ y = y(1:3:3*floor(length(y)/3)); fs_yu = Fs/3; fl = 300; fh = 3400; wn1 = fl/(fs_yu/2); wn2 = fh/(fs_yu/2); wn=[wn1,wn2]; a = 1; N=70;

b=fir1(N,wn,'bandpass'); y1=filter(b,a,y);

%ÐźŲåÖµ×Ó³ÌÐò£¨Íê³ÉÐźŵÄÁã²åÖµºÍ¸ßͨÂ˲¨£©

function f=interp1(x)

%ʵÏÖÐźŵÄÁã²åÖµ

f=interp(x,2) ;

for i=1:length(x)

f(2*i)=0 ; end

%Éè¼Æ¸ßͨÂ˲¨Æ÷

a1=fir1(200,1/2,'high');

%Íê³É¶ÔÐźŵĸßͨÂ˲¨

f=filter(a1,1,f);

%Ê÷Ðνṹ·Ö½â×Ó³ÌÐò(Íê³ÉÐźŵÄ2ͨµÀ·Ö½âÒÔ¼°½µ²ÉÑùÂÊ)

function [y1,y2]=fenjie(x,fs)

a1=fir1(100,1/2); %ƵÆ×µÄÒ»°ëÂ˲¨

a2=qmf(a1) ; %¾µÏñÂ˲¨Æ÷

w1=filter(a1,1,x); %µÍͨÂ˲¨

w2=filter(a2,1,x); %¸ßͨÂ˲¨ %³éÈ¡

% y1=w1;y2=w2;

y1=downsample(w1,2); %³éÈ¡2

y2=downsample(w2,2); %³éÈ¡2

%ÐźŵÄ8ͨµÀµÄ·Ö½â×Ó³ÌÐò£¨£©

function [f1 f2 f3 f4 f5 f6 f7 f8]=fenjie8(x,fs)

%1´Î·Ö½â

[y1,y2]=fenjie(x,fs) ; %y1

%2´Î·Ö½â

[y1_1,y1_2]=fenjie(y1,fs) ; %3´Î·Ö½â

[f1,f2]=fenjie(y1_1,fs) ;

[f3,f4]=fenjie(y1_2,fs) ; %y2

%2´Î·Ö½â

[y2_1,y2_2]=fenjie(y2,fs) ; %3´Î·Ö½â

[f5,f6]=fenjie(y2_1,fs) ;

[f7,f8]=fenjie(y2_2,fs) ;

%¦ÌÂÉPCM±àÂë function pcm = upcm(x) L=length(x); for i=1:L

x(i)=x(i)/4;

x(i)=fix(x(i)*4079); s=sign(x(i)); if s<0

pcm((i-1)*8+1)=0; else

pcm((i-1)*8+1)=1; end x(i)=abs(x(i)); p(i)=x(i);

if x(i)<=15.5

pcm((i-1)*8+2:(i-1)*8+4)=[0,0,0]; else if x(i)<=47.5

pcm((i-1)*8+2:(i-1)*8+4)=[0,0,1]; p(i)=floor((x(i)-15.5)/2); else if x(i)<=111.5

pcm((i-1)*8+2:(i-1)*8+4)=[0,1,0]; p(i)=floor((x(i)-47.5)/4); else if x(i)<=239.5

pcm((i-1)*8+2:(i-1)*8+4)=[0,1,1]; p(i)=floor((x(i)-111.5)/8); else if x(i)<=495.5

pcm((i-1)*8+2:(i-1)*8+4)=[1,0,0]; p(i)=floor((x(i)-239.5)/16); else if x(i)<=1007.5

pcm((i-1)*8+2:(i-1)*8+4)=[1,0,1]; p(i)=floor((x(i)-495.5)/32); else if x(i)<=2031.5

pcm((i-1)*8+2:(i-1)*8+4)=[1,1,0]; p(i)=floor((x(i)-1007.5)/64); else if x(i)<=4079.5

pcm((i-1)*8+2:(i-1)*8+4)=[1,1,1]; p(i)=floor((x(i)-2031.5)/128);

end;end;end;end; end;end;end;end;

y=str2double(dec2bin(p(i))); pcm((i-1)*8+5)=floor(y/1000);

pcm((i-1)*8+6)=floor(mod(y,1000)/100); pcm((i-1)*8+7)=floor(mod(y,100)/10); pcm((i-1)*8+8)=floor(mod(y,10)); end end

%uÂÉpcm½âÂë

function dpcm = dupcm(pcm,nbit)

L=length(pcm)/nbit; for i=1:L

k(i)=pcm((i-1)*8+2)*4+pcm((i-1)*8+3)*2+pcm((i-1)*8+4); h(i)=pcm((i-1)*8+5)*8+pcm((i-1)*8+6)*4+pcm((i-1)*8+7)*2+pcm((i-1)*8+8);

switch k(i) case 0 dpcm(i)=h(i); case 1

dpcm(i)=16.5+h(i)*2+1; case 2

dpcm(i)=49.5+h(i)*4+2; case 3

dpcm(i)=115.5+h(i)*8+4; case 4

dpcm(i)=247.5+h(i)*16+8; case 5

dpcm(i)=511.5+h(i)*32+16; case 6

dpcm(i)=1039.5+h(i)*64+32; case 7

dpcm(i)=2095.5+h(i)*128+64; otherwise disp('error'); end

if pcm((i-1)*8+1)==0 dpcm(i)=0-dpcm(i); end;

dpcm(i)=dpcm(i)/1023; end; end

%Ê÷Ðνṹ×ÛºÏ×Ó³ÌÐò£¨Íê³É2ͨµÀÐźŵÄ×ۺϣ©

function y=hebing(y1,y2)

%ÐźŵÄÁã²åÖµºÍµÍͨÂ˲¨

y1=interp(y1,2) ;

%ÐźŵÄÁã²åÖµºÍ¸ßͨÂ˲¨

y2=interp1(y2) ;

%½øÐвåÖµºóµÄÐźſÉÄܳ¤¶È²»Ò»Ñù£¬Òò´ËÒª½øÐг¤ÐźŵĽØÈ¡

n=min(length(y1),length(y2)) ;

y1=y1(1:n) ;

y2=y2(1:n) ;

%Ðźŵĺϲ¢ y=y1+y2 ;

%ÖØ¹¹Â˲¨Æ÷×é8ͨµÀºÏ²¢ function

f=hebing8(y1_1_1,y1_1_2,y1_2_1,y1_2_2,y2_1_1,y2_1_2,y2_2_1,y2_2_2)

%ÐźŵÄ3´ÎºÏ²¢

y1_1=hebing(y1_1_1,y1_1_2) ;

y1_2=hebing(y1_2_1,y1_2_2) ;

y2_1=hebing(y2_1_1,y2_1_2) ;

y2_2=hebing(y2_2_1,y2_2_2) ;

%ÐźŵÄ2´ÎºÏ²¢

y1=hebing(y1_1,y1_2) ;

y2=hebing(y2_1,y2_2) ;

%ÐźŵÄ1´ÎºÏ²¢

f=hebing(y1,y2) ;