📄 dct.c
字号:
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
int B[4][4]={{5,11,8,10},{9,8,4,12},{1,10,11,4},{19,6,15,7}};
int A[4][4]={{1,1,1,1},{2,1,-1,-2},{1,-1,-1,1},{1,-2,2,-1}};
int B1[4][4]={{1,2,1,1},{1,1,-1,-2},{1,-1,-1,2},{1,-2,1,-1}};
int res[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
const double E[4][4]={{0.25,0.16332,0.25,0.16332},{0.16332,0.2133512,0.16332,0.10669},{0.25,0.16332,0.25,0.16332},{0.16332,0.10669,0.16332,0.10669}};
int res1[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
float res2[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int p,q;
res[0][0]=A[0][0]*B[0][0]+A[0][1]*B[1][0]+A[0][2]*B[2][0]+A[0][3]*B[3][0];
res[0][1]=A[0][0]*B[0][1]+A[0][1]*B[1][1]+A[0][2]*B[2][1]+A[0][3]*B[3][1];
res[0][2]=A[0][0]*B[0][2]+A[0][1]*B[1][2]+A[0][2]*B[2][2]+A[0][3]*B[3][2];
res[0][3]=A[0][0]*B[0][3]+A[0][1]*B[1][3]+A[0][2]*B[2][3]+A[0][3]*B[3][3];
res[1][0]=A[1][0]*B[0][0]+A[1][1]*B[1][0]+A[1][2]*B[2][0]+A[1][3]*B[3][0];
res[1][1]=A[1][0]*B[0][1]+A[1][1]*B[1][1]+A[1][2]*B[2][1]+A[1][3]*B[3][1];
res[1][2]=A[1][0]*B[0][2]+A[1][1]*B[1][2]+A[1][2]*B[2][2]+A[1][3]*B[3][2];
res[1][3]=A[1][0]*B[0][3]+A[1][1]*B[1][3]+A[1][2]*B[2][3]+A[1][3]*B[3][3];
res[2][0]=A[2][0]*B[0][0]+A[2][1]*B[1][0]+A[2][2]*B[2][0]+A[2][3]*B[3][0];
res[2][1]=A[2][0]*B[0][1]+A[2][1]*B[1][1]+A[2][2]*B[2][1]+A[2][3]*B[3][1];
res[2][2]=A[2][0]*B[0][2]+A[2][1]*B[1][2]+A[2][2]*B[2][2]+A[2][3]*B[3][2];
res[2][3]=A[2][0]*B[0][3]+A[2][1]*B[1][3]+A[2][2]*B[2][3]+A[2][3]*B[3][3];
res[3][0]=A[3][0]*B[0][0]+A[3][1]*B[1][0]+A[3][2]*B[2][0]+A[3][3]*B[3][0];
res[3][1]=A[3][0]*B[0][1]+A[3][1]*B[1][1]+A[3][2]*B[2][1]+A[3][3]*B[3][1];
res[3][2]=A[3][0]*B[0][2]+A[3][1]*B[1][2]+A[3][2]*B[2][2]+A[3][3]*B[3][2];
res[3][3]=A[3][0]*B[0][3]+A[3][1]*B[1][3]+A[3][2]*B[2][3]+A[3][3]*B[3][3];
for(p=0;p<=3;p++)
{
for(q=0;q<=3;q++)
{
printf("%d\t",res[p][q]);
if (p==0 && q==3)
{
printf("\n");
}
// to make the next row
if (p==1 && q==3)
{
printf("\n");
}
// to make the next row
if (p==2 && q==3)
{
printf("\n");
}
if (p==3 && q==3)
{
printf("\n");
}
}
}
res1[0][0]=res[0][0]*B1[0][0]+res[0][1]*B1[1][0]+res[0][2]*B1[2][0]+res[0][3]*B1[3][0];
res1[0][1]=res[0][0]*B1[0][1]+res[0][1]*B1[1][1]+res[0][2]*B1[2][1]+res[0][3]*B1[3][1];
res1[0][2]=res[0][0]*B1[0][2]+res[0][1]*B1[1][2]+res[0][2]*B1[2][2]+res[0][3]*B1[3][2];
res1[0][3]=res[0][0]*B1[0][3]+res[0][1]*B1[1][3]+res[0][2]*B1[2][3]+res[0][3]*B1[3][3];
res1[1][0]=res[1][0]*B1[0][0]+res[1][1]*B1[1][0]+res[1][2]*B1[2][0]+res[1][3]*B1[3][0];
res1[1][1]=res[1][0]*B1[0][1]+res[1][1]*B1[1][1]+res[1][2]*B1[2][1]+res[1][3]*B1[3][1];
res1[1][2]=res[1][0]*B1[0][2]+res[1][1]*B1[1][2]+res[1][2]*B1[2][2]+res[1][3]*B1[3][2];
res1[1][3]=res[1][0]*B1[0][3]+res[1][1]*B1[1][3]+res[1][2]*B1[2][3]+res[1][3]*B1[3][3];
res1[2][0]=res[2][0]*B1[0][0]+res[2][1]*B1[1][0]+res[2][2]*B1[2][0]+res[2][3]*B1[3][0];
res1[2][1]=res[2][0]*B1[0][1]+res[2][1]*B1[1][1]+res[2][2]*B1[2][1]+res[2][3]*B1[3][1];
res1[2][2]=res[2][0]*B1[0][2]+res[2][1]*B1[1][2]+res[2][2]*B1[2][2]+res[2][3]*B1[3][2];
res1[2][3]=res[2][0]*B1[0][3]+res[2][1]*B1[1][3]+res[2][2]*B1[2][3]+res[2][3]*B1[3][3];
res1[3][0]=res[3][0]*B1[0][0]+res[3][1]*B1[1][0]+res[3][2]*B1[2][0]+res[3][3]*B1[3][0];
res1[3][1]=res[3][0]*B1[0][1]+res[3][1]*B1[1][1]+res[3][2]*B1[2][1]+res[3][3]*B1[3][1];
res1[3][2]=res[3][0]*B1[0][2]+res[3][1]*B1[1][2]+res[3][2]*B1[2][2]+res[3][3]*B1[3][2];
res1[3][3]=res[3][0]*B1[0][3]+res[3][1]*B1[1][3]+res[3][2]*B1[2][3]+res[3][3]*B1[3][3];
res2[0][0]=res1[0][0]*E[0][0];
res2[0][1]=res1[0][1]*E[0][1];
res2[0][2]=res1[0][2]*E[0][2];
res2[0][3]=res1[0][3]*E[0][3];
res2[1][0]=res1[1][0]*E[1][0];
res2[1][1]=res1[1][1]*E[1][1];
res2[1][2]=res1[1][2]*E[1][2];
res2[1][3]=res1[1][3]*E[1][3];
res2[2][0]=res1[2][0]*E[2][0];
res2[2][1]=res1[2][1]*E[2][1];
res2[2][2]=res1[2][2]*E[2][2];
res2[2][3]=res1[2][3]*E[2][3];
res2[3][0]=res1[3][0]*E[3][0];
res2[3][1]=res1[3][1]*E[3][1];
res2[3][2]=res1[3][2]*E[3][2];
res2[3][3]=res1[3][3]*E[3][3];
printf("\n");
printf("\n");
printf("\n");
for(p=0;p<=3;p++)
{
for(q=0;q<=3;q++)
{
printf("%d\t",res1[p][q]);
if (p==0 && q==3)
{
printf("\n");
}
// to make the next row
if (p==1 && q==3)
{
printf("\n");
}
// to make the next row
if (p==2 && q==3)
{
printf("\n");
}
if (p==3 && q==3)
{
printf("\n");
}
}
}
printf("\n");
printf("\n");
printf("\n");
for(p=0;p<=3;p++)
{
for(q=0;q<=3;q++)
{
printf("%f\t",res2[p][q]);
if (p==0 && q==3)
{
printf("\n");
}
// to make the next row
if (p==1 && q==3)
{
printf("\n");
}
// to make the next row
if (p==2 && q==3)
{
printf("\n");
}
if (p==3 && q==3)
{
printf("\n");
}
}
}
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -