c语言实现DCT变换.txt资料文档下载
《c语言实现DCT变换.txt资料文档下载》由会员分享,可在线阅读,更多相关《c语言实现DCT变换.txt资料文档下载(4页珍藏版)》请在冰点文库上搜索。
![c语言实现DCT变换.txt资料文档下载](https://file1.bingdoc.com/fileroot1/2023-4/30/96a87b3a-08fc-4631-bbbf-57152470124e/96a87b3a-08fc-4631-bbbf-57152470124e1.gif)
inti,j;
intaa[M][N];
for(i=0;
i<
M;
i++)
{
for(j=0;
j<
N;
j++)
{
aa[i][j]=(int)(a[i][j]);
//ȡ��
printf("
%d,"
aa[i][j]);
}
\n"
);
}
}
voidFast(floata[N][M],floatb[M][N]) //ת�ú
���
{
a[j][i]=b[i][j];
voidMult(floata[M][N],floatb[M][N],floatc[M][N]) //DCT���任
inti,j,k;
floatsum;
sum=0;
for(k=0;
k<
k++)
sum+=a[i][k]*b[k][j];
c[i][j]=sum;
voidIMult(floata[M][N],floatb[M][N],floatc[M][N]) //DCT���任
sum+=a[k][j]*b[i][k];
voidLH(floata[M][N],floatb[M][N],floatc[M][N]) //����
c[i][j]=2*a[i][j]/b[i][j];
voidFLH(floata[M][N],floatb[M][N],floatc[M][N]) //������
c[i][j]=a[i][j]*b[i][j]/2;
voidmain() //������
floatDCT[M][N],TDCT[N][M];
floattemp[M][N],F[M][N];
floatCk;
floatq[M][N];
//��������
floatf[M][N];
//DCT�任���
floatff[M][N];
//DCT���任���
floatlh[M][N];
//�������
floatflh[M][N];
//���������
FILE*fp=fopen("
YuanShi.txt"
"
r"
),*fp2=fopen("
Q.txt"
if(fp==NULL) //����ԭʼ����
error!
"
fscanf(fp,"
%f"
&
f[i][j]);
fclose(fp);
if(fp2==NULL) //������������
fscanf(fp2,"
q[i][j]);
fclose(fp2);
if(i==0)
Ck=1.000000/sqrt
(2);
elseCk=1;
DCT[i][j]=sqrt(2.000000/N)*Ck*cos((2*j+1)*i*P/(2*N));
//DCTϵ��
Fast(TDCT,DCT);
//��ת��
Mult(DCT,f,temp);
//��DCT�任
Mult(temp,TDCT,F);
LH(F,q,lh);
//����
FLH(lh,q,flh);
//������
IMult(DCT,flh,temp);
//��DCT���任
IMult(temp,TDCT,ff);
freopen("
DCT.txt"
w"
stdout);
//���DCT�任�������F���ļ�DCT.txt
Print(F);
fclose(stdout);
LH.txt"
//��������������lh���ļ�LH.txt
Print(lh);
FLH.txt"
//����������������flh���ļ�FLH.txt
Print(flh);
IDCT.txt"
//���DCT���任�������ff���ļ�IDCT.txt
Print(ff);