Convolucion Circular MATLAB
Convolucion Circular MATLAB
Código
/*Declaración de funciones*/
/*Funcion main*/
int main()
int i;
scanf("%d",&dim1);
scanf("%d", &aux);
*(xn+i)= aux;
printf("\n");
scanf("%d",&dim2);
scanf("%d", &aux);
*(hn+i)=aux;
if(dim1<=dim2)
{
int dimcirc=dim2;
conv(dim1,xn,dim2,hn,yn);
zi=0
k=dim2-dim1-2;
q=dim1+dim2-2;
for(j=dimcirc-1;j>=0;j--)
*(zn+j)=0;
*(wn+j)=0;
*(wn+j)=*((yn+(q%dimcirc))+j);
*(zn+j)=*((yn+(k%dimcirc))-j);
for(zi=0;zi<dimcirc;zi++)
printf("zn:[%d]=%d \n",zi,(*(zn-zi)+*(wn-zi)));
else
int dimcirc=dim1;
paux = xn;
xn = hn;
hn = paux;
conv(dim2,xn,dim1,hn,yn);
zi=0;
q=dim1+dim2-2;
for(j=dimcirc-1;j>=0;j--)
*(zn+j)=0;
*(wn+j)=0;
*(wn+j)=*((yn+(q%dimcirc))+j);
*(zn+j)=*((yn+(k%dimcirc))-j);
for(zi=0;zi<dimcirc;zi++)
printf("zn:[%d]=%d \n",zi,(*(zn-zi)+*(wn-zi)));
int xi=0,yi=0,hi=0;
int dimres=dim1+dim2-1;
for(xi=0;xi<dim1;xi++)
for(hi=0;hi<dim2;hi++)
y[xi+hi]=(y[xi+hi]+x[xi]*h[hi]);
for(yi=0;yi<dimres;yi++)
{ printf("yn:[%d]=%d \n",yi,y[yi]);
}
}
MATLAB