卷积算法
- 格式:doc
- 大小:45.50 KB
- 文档页数:4
实验十卷积算法
姓名:郑永翔班级:通信1103 学号:201103110330
实验目的
1. 掌握卷积算法的原理和计算方法。
2. 熟悉卷积算法特性。
3. 学习卷积算法的程序实现。
实验内容
卷积和:一种数学运算,是求线性时不变离散时间系统零状态响应的主要算法。
卷积和的运算在图形表示上可分为四步:
(1) 翻褶:先在变量坐标m上作出x[m]和h[m],将h[m]以m=0为对称轴翻转成h[-m]。
(2) 移位:将h[-m]右移n位,得到h[n-m]。
当n为正整数时右移,当n为负整数时左移。
(3) 相乘:将h[n-m]和x[m]相同时刻的对应点值相乘。
(4) 相加:把以上所有对应点的乘积叠加起来,即得y[n]值。
取n=…,-2,-1,0,1,2,3,…各值,即可得输出序列y[n]每个时刻的值。
实验结论
static int processing1(int *output1,int *output2)
{
int m=sk-1;
for(;m>0;m--)
{
*output2++ = *output1++ * ain;
}
/* additional processing load */
// load(processingLoad);
return(TRUE);
}
1)processing1(int *ouput1, int *output2)
调用形式:processing1(int *ouput1, int *output2)
参数解释:ouput1、output2为两个整型指针数组。
返回值解释:返回了一个“ture”,让主函数的while循环保持连续。
功能说明:对输入的ouput1 buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。
static int processing2(int *output2, int *output3)
{ int n=zhy;
size=BUFSIZE;
for(;(size-n)>0;n++)
{ *output3++ = output2[n];
}
/* for (;n>0;n--)
{ *output3++ = 0;
} */
// load(processingLoad);
return(TRUE);
}
(2)processing2(int *output2, int *output3)
调用形式:processing2(int *output2, int *output3)
参数解释:output2、output3为两个整型指针数组。
返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:对输出的output2 buffer波形进行作n点移位,然后把生成的波形上的各点
的值存入以OUTPUT3指针开始的一段地址空间中。
static int processing3(int *input1,int *output2,int *output4)
{ int m=sk;
int y=zhy;
int z,x,w,i,f,g;
for(;(m-y)>0;)
{i=y;
x=0;
z=0;
f=y;
for(;i>=0;i--)
{g=input1[z]*output2[f];
x=x+g;
z++;
f--;
*output4++ = x;
y++;
}
m=sk;
y=sk-1;
w=m-zhy-1;
for(;m>0;m--)
{
y--;
i=y;
z=sk-1;
x=0;
f=sk-y;
for(;i>0;i--,z--,f++)
{g=input1[z]*output2[f];
x=x+g;
}
out4_buffer[w]=x;
w++;
}
// load(processingLoad);
return(TRUE);
}
(3)processing3(int *input1,int *output3,int *output4)
调用形式:processing3(int *input1,int *output3,int *output4)
参数解释:output3、output4、input1为三个整型指针数组。
返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:对输入的input2 buffer波形和输入的input1 buffer作卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。
static int processing4(int *input2,int *output1)
{ int m=sk;
for(;m>=0;m--)
{
*output1++ = *input2++ * ain;
}
for(;(size-m)>0;m++)
{output1[m]=0;
}
// load(processingLoad);
return(TRUE);
(4)processing4(int *input2,int *output1)
调用形式:processing4(int *input2,int *output1)
参数解释:output1、input2为两个整型指针数组。
返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:对输入的input2 buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中
卷积算法的DSP实现是对程序理解的考验。