佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1917|回复: 2

會在matlab里用cross correlation function的朋友請教下我

[复制链接]
发表于 7-11-2006 07:22 PM | 显示全部楼层 |阅读模式
本人在做著一份报告
关於noise reduction technique的

现在
我在matlab里輸入两种不一样程度的杂音
即左右耳各一个

我得把它們的frequency index分成二十一个subbands
然后左耳的第一个subband和右耳的第一个subband做cross colleration
左耳的第六个subband和右耳的第六个subband做cross colleration
以此类推

以下是我做的codes
但我每一次run都會有不同的結果
所以我应該做錯了

还有
如果在cross correlation我沒加上nlags
matlab會說"max lag must be integer"
什么意思?
要怎样做呢?
拜託了
很急

[ 本帖最后由 山羊座 于 8-11-2006 01:02 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 7-11-2006 07:22 PM | 显示全部楼层
n=512;  
Fs=16000;  


wavwrite(R_input,Fs,'c:\forgetnoiseR.wav');
wavwrite(L_input,Fs,'c:\forgetnoiseL.wav');

% Read the wave file in order to define the mixtured signal for both
% channels

x=wavread('C:\forgetnoiseR.wav');  % right channel
[x,fs,bits]=wavread('C:\forgetnoiseR.wav');
% wavplay (x,Fs)

y=wavread('C:\forgetnoiseL.wav'); % left channel
[y,fs,bits]=wavread('C:\forgetnoiseL.wav');
% wavplay (y,Fs)


% Buffering for 0.5 rate overlap-add, right channel

x_buffer=buffer(x,32,16,'nodelay'); %Window size for 16kHz is 32ms

length_a=length(x_buffer);
k=1;

for i=1:length_a,
    for j=1:32,
        row(k)=x_buffer(j,i);
        k=k+1;
    end;
end;
   
% Subsapmle

j=1;
for i=1:32:length(x()
    w(j)=x(i);
    j=j+1;
end;

s=fft(w,n);
s=s*1000;

% Prepare the Hanning window
h = hanning(512, 'periodic');

% Power Density Spectrum
X=[];

for i=1:512;
X(i) = max(20 * log10(abs(1/n*s(i)* h)));  
end;

% Calculation of the Power Sprectrum
X=abs(X).^2;


% Buffering for 0.5 rate overlap-add, left channel

y_buffer=buffer(y,32,16,'nodelay'); %Window size for 16kHz is 32ms

length_b=length(y_buffer);
k=1;

for i=1:length_b,
    for j=1:32,
        row(k)=y_buffer(j,i);
        k=k+1;
    end;
end;
   
% Subsapmle

j=1;
for i=1:32:length(y()
    v(j)=y(i);
    j=j+1;
end;

sy=fft(v,n);
sy=sy*1000;

% Prepare the Hanning window
h = hanning(512, 'periodic');


% Power Density Spectrum

Y=[];

for i=1:512;
Y(i) = max(10 * log10(abs(1/n*sy(i)* h))); % freq=1:n/2
end;

% Calculation of the Power Sprectrum
Y=abs(Y).^2;


% Table of the absolute threshold, available in Table D.1a

L = [
   % Frequency, Hz(:,1) | Critical Band Rate, z(:,2) | Absolute Threshold, dB(:,3) |
         
         31.25    0.309   58.23      ;       62.50    0.617   33.44     ;
         93.75    0.925   24.17      ;      125.00    1.232   19.20     ;
        156.25    1.538   16.05      ;      187.50    1.842   13.87     ;
        218.75    2.145   12.26      ;      250.00    2.445   11.01     ;  
        281.25    2.742   10.01      ;      312.50    3.037    9.20     ;
        343.75    3.329    8.52      ;      375.00    3.618    7.94     ;
        406.25    3.903    7.44      ;      437.50    4.185    7.00     ;   
        468.75    4.463    6.64      ;      500.00    4.736    6.28     ;   
        531.25    5.006    5.97      ;      562.50    5.272    5.70     ;   
        593.75    5.533    5.44      ;      625.00    5.789    5.21     ;   
        656.25    6.041    5.00      ;      687.50    6.289    4.80     ;
        718.75    6.532    4.62      ;      750.00    6.770    4.45     ;  
        812.50    7.004    4.29      ;      812.50    7.233    4.14     ;
        843.75    7.457    4.00      ;      875.00    7.677    3.86     ;
        906.25    7.892    3.73      ;      937.50    8.103    3.61     ;
        968.75    8.309    3.49      ;     1000.00    8.511    3.37     ;
       1031.25    8.708    3.26      ;     1062.50    8.901    3.15     ;
       1093.75    9.090    3.04      ;     1125.00    9.275    2.93     ;
       1156.25    9.456    2.83      ;     1187.50    9.632    2.73     ;
       1218.75    9.805    2.63      ;     1250.00    9.974    2.53     ;
       1281.25   10.139    2.42      ;     1312.50   10.301    2.32     ;
       1343.75   10.459    2.22      ;     1375.00   10.614    2.12     ;
       1406.25   10.765    2.02      ;     1437.50   10.913    1.92     ;
       1468.75   11.058    1.81      ;     1500.00   11.199    1.71     ;
       1562.50   11.474    1.49      ;     1625.00   11.736    1.27     ;
       1687.50   11.988    1.04      ;     1750.00   12.230    0.80     ;
       1812.50   12.461    0.55      ;     1875.00   12.684    0.29     ;
       1937.50   12.898    0.02      ;     2000.00   13.104   -0.25     ;
       2062.50   13.302   -0.54      ;     2125.00   13.493   -0.83     ;
       2187.50   13.678   -1.12      ;     2250.00   13.855   -1.43     ;
       2312.50   14.027   -1.73      ;     2375.00   14.193   -2.04     ;
       2437.50   13.354   -2.34      ;     2500.00   14.509   -2.64     ;
       2562.50   14.660   -2.93      ;     2625.00   14.807   -3.22     ;
       2687.50   14.949   -2.49      ;     2750.00   15.087   -3.74     ;
       2812.50   15.221   -3.98      ;     2875.00   15.351   -4.20     ;
       2937.50   15.478   -4.40      ;     3000.00   15.602   -4.57     ;
       3125.00   15.841   -4.82      ;     3250.00   16.069   -4.96     ;
       3375.00   16.496   -4.98      ;     3500.00   16.496   -4.90     ;
       3625.00   16.697   -4.70      ;     3750.00   16.891   -4.39     ;
       3875.00   17.078   -3.99      ;     4000.00   17.259   -3.51     ;
       4125.00   17.434   -2.99      ;     4250.00   17.605   -2.45     ;
       4375.00   17.770   -1.90      ;     4500.00   17.932   -1.37     ;
       4625.00   18.089   -0.86      ;     4750.00   18.242   -0.39     ;
       4875.00   18.392    0.03      ;     5000.00   18.539    0.40     ;
       5125.00   18.682    0.72      ;     5250.00   18.823    1.00     ;
       5375.00   18.960    1.24      ;     5500.00   19.095    1.44     ;
       5625.00   19.226    1.62      ;     5750.00   19.356    1.78     ;
       5875.00   19.482    1.92      ;     6000.00   19.606    2.05     ;
       6125.00   19.728    2.18      ;     6250.00   19.847    2.30     ;
       6375.00   19.964    2.42      ;     6500.00   20.079    2.55     ;
       6625.00   20.191    2.69      ;     6750.00   20.300    2.82     ;
       6875.00   20.408    2.97      ;     7000.00   20.513    3.13     ;
       7125.00   20.616    3.29      ;     7250.00   20.717    3.46     ;
       7375.00   20.815    3.65      ;     7500.00   20.912    3.84     ;  
       ];
回复

使用道具 举报

 楼主| 发表于 7-11-2006 07:22 PM | 显示全部楼层
LTm=[];
   
for n = 1 : 21 % 21 subbands
   
    if (n == 1) % find minimum masking threshold for each subbands
        for L = 1 : 3 % subband indexes
        LTm(n)=(X(L));
        end
        
    elseif (n == 2)
        for L = 4 : 7
          LTm(n)=(X(L));
        end
        
    elseif (n == 3)
        for L = 8 : 10
         LTm(n)=(X(L));
        end
        
    elseif (n == 4)
        for L = 11 : 13
          LTm(n)=(X(L));
        end
        
    elseif (n == 5)
        for L = 14 : 17
         LTm(n)=(X(L));
        end
        
    elseif (n == 6)
        for L = 18 : 21
          LTm(n)=(X(L));
        end
        
    elseif (n == 7)
        for L = 22 : 25
          LTm(n)=(X(L));
        end
        
    elseif (n == 8)
        for L = 26 : 30
          LTm(n)=(X(L));
        end
        
    elseif (n == 9)
        for L = 31 : 35
         LTm(n)=(X(L));
        end
        
    elseif (n == 10)
        for L = 36 : 40
          LTm(n)=(X(L));
        end
        
    elseif (n == 11)
        for L = 41 : 47
          LTm(n)=(X(L));
        end
        
    elseif (n == 12)
        for L = 48 : 51
          LTm(n)=(X(L));
        end
        
    elseif (n == 13)
        for L = 52 : 55
         LTm(n)=(X(L));
        end
        
    elseif (n == 14)
        for L = 56 : 61
          LTm(n)=(X(L));
        end
        
    elseif (n == 15)
        for L = 62 : 67
          LTm(n)=(X(L));
        end
        
    elseif (n == 16)
        for L = 68 : 74
          LTm(n)=(X(L));
        end
        
    elseif (n == 17)
        for L = 75 : 79
         LTm(n)=(X(L));
        end
        
    elseif (n == 18)
        for L = 80 : 84
         LTm(n)=(X(L));
        end
        
    elseif (n == 19)
        for L = 85 : 91
          LTm(n)=(X(L));
        end
        
    elseif (n == 20)
        for L = 92 : 99
         LTm(n)=(X(L));
        end
        
    elseif (n == 21)
        for L = 100 : 108
         LTm(n)=(X(L));
        end
    end
end


LTn=[];

for n = 1 : 21 % 21 subbands
   
    if (n == 1) % find minimum masking threshold for each subbands
        for L = 1 : 3 % subband indexes
        LTn(n)=(Y(L));
        end
        
    elseif (n == 2)
        for L = 4 : 7
            LTn(n)=(Y(L));
        end
        
    elseif (n == 3)
        for L = 8 : 10
           LTn(n)=(Y(L));
        end
        
    elseif (n == 4)
        for L = 11 : 13
           LTn(n)=(Y(L));
        end
        
    elseif (n == 5)
        for L = 14 : 17
           LTn(n)=(Y(L));
        end
        
    elseif (n == 6)
        for L = 18 : 21
            LTn(n)=(Y(L));
        end
        
    elseif (n == 7)
        for L = 22 : 25
           LTn(n)=(Y(L));
        end
        
    elseif (n == 8)
        for L = 26 : 30
            LTn(n)=(Y(L));
        end
        
    elseif (n == 9)
        for L = 31 : 35
          LTn(n)=(Y(L));
        end
        
    elseif (n == 10)
        for L = 36 : 40
            LTn(n)=(Y(L));
        end
        
    elseif (n == 11)
        for L = 41 : 47
            LTn(n)=(Y(L));
        end
        
    elseif (n == 12)
        for L = 48 : 51
            LTn(n)=(Y(L));
        end
        
    elseif (n == 13)
        for L = 52 : 55
           LTn(n)=(Y(L));
        end
        
    elseif (n == 14)
        for L = 56 : 61
           LTn(n)=(Y(L));
        end
        
    elseif (n == 15)
        for L = 62 : 67
            LTn(n)=(Y(L));
        end
        
    elseif (n == 16)
        for L = 68 : 74
           LTn(n)=(Y(L));
        end
        
    elseif (n == 17)
        for L = 75 : 79
           LTn(n)=(Y(L));
        end
        
    elseif (n == 18)
        for L = 80 : 84
           LTn(n)=(Y(L));
        end
        
    elseif (n == 19)
        for L = 85 : 91
            LTn(n)=(Y(L));
        end
        
    elseif (n == 20)
        for L = 92 : 99
           LTn(n)=(Y(L));
        end
        
    elseif (n == 21)
        for L = 100 : 108
           LTn(n)=(Y(L));
        end
    end
end



nlags=[];

for n = 1 : 21 % 21 subbands
   
    if (n == 1) % find minimum masking threshold for each subbands
         
        Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
         
        
    elseif (n == 2)
         
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
      
        
    elseif (n == 3)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 4)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 5)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 6)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 7)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 8)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 9)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 10)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 11)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 12)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 13)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 14)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 15)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 16)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 17)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 18)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 19)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 20)
          Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
        
    elseif (n == 21)
         Sxy(n)=xcorr(LTm(n),LTn(n),nlags);
    end
end  


        
figure (1)
subplot(3,1,1);
plot(Z();
grid;
title('Target sound signal')
xlabel('nSamples')
ylabel('Magnitude')

subplot(3,1,2)
plot(R_input();
grid;
title('Mixtured sound signal of right channel')
xlabel('nSamples')
ylabel('Magnitude')

subplot(3,1,3)
plot(L_input();
grid;
title('Mixtured sound signal of left channel')
xlabel('nSamples')
ylabel('Magnitude')

figure (2)
subplot(2,1,1)
stairs(LTm()
grid;
title('Division of 21 subbands for right channel')
xlabel('Number of subbands')
ylabel('Magnitude (dB)')

subplot(2,1,2)
stairs(LTn()
grid;
title('Division of 21 subbands for left channel')
xlabel('Number of subbands')
ylabel('Magnitude (dB)')

figure (3)

stairs(Sxy()

figure (4)
subplot(2,1,1)
plot(X()

subplot(2,1,2)
plot(Y()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 16-8-2025 02:55 PM , Processed in 0.112053 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表