📄 expdct01.c
字号:
extern void InitC5402(void);
extern void OpenMcBSP(void);
extern void CloseMcBSP(void);
extern void READAD50(void);
extern void WRITEAD50(void);
/***********************************************************************
** Main Function Program
***********************************************************************/
#include "math.h"
#include "stdio.h"
#define pi 3.1415927
double x[128],y[128],z[128];
int n=128;
void dct1c2 (double x[], double y[], int n);
void idct1c2 (double y[], double z[], int n);
/*
x为输入序列,y为DCT变换输出序列,z为重构序列,序列长度为128
n为DCT变换序列长度
dct1c2为DCT变换子程序,idct1c2为DCT逆变换子程序
*/
void dct1c2 (double x[], double y[], int n)
{
double s,t;
int i,j;
s=0.0;
for (i=0; i<=n-1; i++)
{
s=s+x[i];
}
for (i=1; i<=n-1; i++)
{
t=0.0;
for (j=0; j<=n-1; j++)
{
t=t+x[j]*cos((2.0*j+1)*i*pi/(2.0*n));
}
y[i]=sqrt(2.0/n)*t;
}
y[0]=s/(sqrt(n/1.0));
}
void idct1c2(double y[], double z[], int n)
{
double t;
int i,j;
for (i=0; i<=n-1; i++)
{
t=0.0;
for (j=0; j<=n-1; j++)
{
t=t+y[j]*cos((2.0*i+1)*j*pi/(2.0*n));
}
z[i]=y[0]/(sqrt(n/1.0))+sqrt(2.0/n)*t;
}
}
void main(void)
{
int k=0;
int i,j;
int xm,zm;
int *px = (int*)0x3000;
int *pz = (int*)0x3080;
for (; ;)
{
InitC5402(); /* initialize C5402 DSP */
OpenMcBSP();
for (j=0; j<=2; j++)
{
READAD50();
for (i=0; i<=127; i++)
{
px = (int*)(0x3000+i);
xm = *px;
x[i] = xm/32768.0;
}
dct1c2 (x,y,n);
idct1c2 (y,z,n);
for (i=0; i<=127; i++)
{
pz = (int*)(0x3080+i);
zm=(int)(z[i]*32768.0);
*pz = zm;
}
WRITEAD50();
k++;
}
}
/*void PROCESSING(void)
{
do the necessery operations here!*/
}
/***********************************************************************
** End of File –– exp08.c
***********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -