⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lunwenbpbch.m

📁 这是对音频新训好进行bch编码后通过代同滤波器的程序
💻 M
字号:
rgb=imread('g:\pp.bmp','bmp');
pic=imresize(rgb,[64 64]);
st=zeros(1,4096);
for i=0:63
    for j=0:63
         st(1,i*64+j+1)=pic(i+1,j+1); %str(1,(64*(i-1)+j))=pic(i,j);
   end
end                                                   
s=zeros(1024,4);
for i=0:1023    
    for j=0:3        
        s(i+1,j+1)=st(i*4+j+1);    
    end
end
g=[1 0 1 1];
codecrc=encode(s,7,4,'cyclic',g);%codecrc 7168=4096*7/4
codebch=bchenco(codecrc,15,7);%7168*15/7=1024*15=15360

code=zeros(1,15360);
 for i=0:1023
    for j=0:14
         code(1,i*15+j+1)=codebch(i+1,j+1); %str(1,(64*(i-1)+j))=pic(i,j);
   end
end          

aa=wavread('3');
[sqnr256,aquan256,code256]=u_pcm(aa,256);%注意量化位数的选取!!!这里选取8,2^8=256
A1=aquan256;
AA=A1';
A(1:130000)=AA(1:130000);
for i=1:122880 % 15360*8=122880,录音的时候采样频率是22.05KHZ
     Ae(i)=A(i);
end

y=dct(Ae);

for k=2:15361 %code=7168
    yy(k)=y(k)*(1+1.5*code(k-1));% 0.008的取值范围范围从0.002到0.009
end
yy(1)=y(1);
for k=15362:122880
    yy(k)=y(k);
end
Aee=idct(yy);
for  i=1:122880;%64*64*8=32768录音的时候采样频率是22.05KHZ
     Aw(i)=Aee(i);
end
for i=122881:130000;%64*64*8=32768录音的时候采样频率是22.05KHZ
     Aw(i)=A(i);
end

fs=22050;
wp=[200 4000]*2/fs;
ws=[50 8000]*2/fs;
rp=3;
rs=15;
Nn=128;
[N,wn]=buttord(wp,ws,rp,rs)
[b,a]=butter(N,wn)

As=filter(b,a,Aw);

for q=1:122880% 48*8=384
     Ase(q)=As(q);
end
yyy=dct(Ase);

for l=2:15361 % 以下没有错
    strr(l-1)=[yyy(l)-y(l)]/[1.5*y(l)];
    strrr=abs(strr);
end 
minstr=min(strrr);
maxstr=max(strrr)
b=strrr;
for  p=1:15360 %此处没有错 
     if  b(p)>0.80  % threshoud 是自己设定的门限值,可以取得0.5到0.7之间,但是0.6效果最好。
           b(p)=1; %似乎是1表示白,0表示
     else  
           b(p)=0;
     end 
end 

bb=zeros(1024,15);
for i=0:1023    
    for j=0:14        
        bb(i+1,j+1)=b(i*15+j+1);    
    end
end
codebchr=bchdeco(bb,7,1);
codecrcr=decode(codebchr,7,4,'cyclic',g); %输出纠正的码字

sr=zeros(1,4096);
for i=0:1023
    for j=0:3
         sr(1,i*4+j+1)=codecrcr(i+1,j+1); %str(1,(64*(i-1)+j))=pic(i,j);
   end
end                                                   
picc=zeros(64,64);
for i=0:63    
    for j=0:63        
        picc(i+1,j+1)=sr(i*64+j+1);    
    end
end
figure(1)
subplot(211),imshow(pic);title('pic');
subplot(212),imshow(picc);title('picc');
figure(2)
subplot(2,1,1);plot(Ae);title('Ae');
subplot(2,1,2);plot(As);title('As');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -