2016-01-23 89 views
-2

我试图使MATLAB CONV功能C.到目前为止,我有这样的:Matlab的卷积码

int n=Length(SignalArray); 
int m=Length(FilterArray); 
TempX=[SignalArray,Zeros(1,FilterArray)]; 
TempH=[FilterArray,Zeros(1,SignalArray)]; 
for(int i=0;i<n+m-1;i++){ 
     ResultArray(i)=0; 
     for(int j=0;j<=m-1;j++){ 
      if(i-j+1>0){ 
       int TempVal=ResultArray(i)+TempX(j)*TempH(i-j); 
       ResultArray(i)=TempVal; 
      } 
     } 
    } 

卷积结果的第一要素出来要罚款,但最后一个元素要么是正确的,要么是被证明是非常高的数字(类似于权力9的10)。

请帮忙。

+0

这是如何编译的? –

+0

它没有。这只是伪代码。 –

回答

1

好的。所以我使用了下面的函数(其中函数AddAtSpecificIndex具有原型AddAtSpecificIndex(Array,Value,Index)):

// CONVOLVE TWO ARRAYS FUNCTION 
void ConvolveArrays(Array * SignalArray, Array * KernelArray, Array * ResultArray){ 

int m=SignalArray->used; 
int x=KernelArray->used; 

InitNullArray(ResultArray); 

    for (int n=0; n < m+x-1; n++){ 
    int kmin, kmax, k; 
    AddAtSpecificIndex(ResultArray,0,n); 

    if(n>=x-1){kmin= n-x-1;} 
    else{kmin=0;} 

    if(n < m-1){kmax = n;} 
    else{kmax=m-1;} 

     for (k=kmin;k<=kmax;k++) 
     {int TempVal=ResultArray->array[n]+ SignalArray->array[k] * KernelArray->array[n-k];AddAtSpecificIndex(ResultArray,TempVal,n);} 
    } 

}