#include<stdio.h>
#include<math.h>
#define PI 3.141592653
float Construct(float y[][8]);
float *Turnover(float a[][8], int, int );
float Multiplication(float a[][8], float b[][8], int, int, float c[][8] );
void main()
{
int i,j,m,n;
float a[][8] = {{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8}};
float b[][8] = {{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4},{5,5,5,5,5,5,5,5},{6,6,6,6,6,6,6,6},{7,7,7,7,7,7,7,7},{8,8,8,8,8,8,8,8}};
float c[8][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};
float d[8][8];
float y[8][8];
float y1[8][8];
float M[8][8] = {{1,-2,3,4,5,6,7,8},{1,2,-3,4,5,6,7,8},{1,2,3,-4,5,6,7,8},{1,2,3,4,-5,6,7,8},{1,2,3,4,5,-6,7,8},{1,2,3,4,5,6,-7,8},{1,2,3,4,5,6,7,-8},{-1,2,3,4,5,6,7,8}};
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
printf("%7.4f ",M[i][j]);
}
printf("\n");
}
printf("\n\n");
m = 8;
n = 8;
Construct(y);
//Turnover( a, d, m, n);
y1 = *Turnover( y, m, n);
Multiplication( y, M, m, n, c);
Multiplication( c, y1, m, n, c);
//---------------------------打印结果--------------------------
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
printf("%7.4f ",y[i][j]);
}
printf("\n");
}
printf("\n\n");
//
for(i=0;i<n;i++)
{
for( j=0;j<m;j++)
printf("%7.4f ",y1[i][j]);
printf("\n");
}
printf("\n\n");
//
for(i=0;i<m;i++)
{
for( j=0;j<m;j++)
printf("%7.4f ",c[i][j]);
printf("\n");
}
printf("\n\n");
}
//------------------------------构建数组------------------------------
float Construct(float y[][8])
{
int i,j;
int x = 8;
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
y[i][j] = cos(2*PI*i*j/(2*x-1));
y[i][j] = y[i][j]/2;
}
y[0][i] = y[i][0]/sqrt(2);
y[i][0] = y[0][i];
}
return y[8][8];
}
//-----------------------矩阵的转置----------------------------------
float *Turnover(float y[][8], int m,int n)
{
int i,j;
float y1[8][8];
for(i=0;i<n;i++)
{
for( j=0;j<m;j++)
y1[i][j] = y[j][i];
}
return y1[];
}
//-----------------------矩阵的乘法----------------------------------
float Multiplication(float a[][8],float b[][8],int m,int n, float c[][8])
{
int i,j,k;
for( i=0;i<m;i++)
for( j=0;j<m;j++)
for( k=0;k<n;k++)
c[i][j] = c[i][j]+a[i][k]*b[k][i];
return c[8][8];
}
/*
#include<stdio.h>
#include<math.h>
#define PI 3.141592653
float Construct(float y[][8]);
float Turnover(float a[][8], float b[][8], int, int );
float Multiplication(float a[][8], float b[][8], int, int, float c[][8] );
void main()
{
int i,j,m,n;
float a[][8] = {{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8}};
float b[][8] = {{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4},{5,5,5,5,5,5,5,5},{6,6,6,6,6,6,6,6},{7,7,7,7,7,7,7,7},{8,8,8,8,8,8,8,8}};
float c[8][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};
float d[8][8];
float y[8][8];
float y1[8][8];
float M[8][8] = {{1,-2,3,4,5,6,7,8},{1,2,-3,4,5,6,7,8},{1,2,3,-4,5,6,7,8},{1,2,3,4,-5,6,7,8},{1,2,3,4,5,-6,7,8},{1,2,3,4,5,6,-7,8},{1,2,3,4,5,6,7,-8},{-1,2,3,4,5,6,7,8}};
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
printf("%7.4f ",M[i][j]);
}
printf("\n");
}
printf("\n\n");
m = 8;
n = 8;
Construct(y);
//Turnover( a, d, m, n);
Turnover( y, y1, m, n);
Multiplication( y, M, m, n, c);
Multiplication( c, y1, m, n, c);
//---------------------------打印结果--------------------------
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
printf("%7.4f ",y[i][j]);
}
printf("\n");
}
printf("\n\n");
//
for(i=0;i<n;i++)
{
for( j=0;j<m;j++)
printf("%7.4f ",y1[i][j]);
printf("\n");
}
printf("\n\n");
//
for(i=0;i<m;i++)
{
for( j=0;j<m;j++)
printf("%7.4f ",c[i][j]);
printf("\n");
}
printf("\n\n");
}
//------------------------------构建数组------------------------------
float Construct(float y[][8])
{
int i,j;
int x = 8;
for( i=0;i<8;i++)
{
for( j=0;j<8;j++)
{
y[i][j] = cos(2*PI*i*j/(2*x-1));
y[i][j] = y[i][j]/2;
}
y[0][i] = y[i][0]/sqrt(2);
y[i][0] = y[0][i];
}
return y[8][8];
}
//-----------------------矩阵的转置----------------------------------
float Turnover(float y[][8],float y1[][8], int m,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for( j=0;j<m;j++)
y1[i][j] = y[j][i];
}
return y1[8][8];
}
//-----------------------矩阵的乘法----------------------------------
float Multiplication(float a[][8],float b[][8],int m,int n, float c[][8])
{
int i,j,k;
for( i=0;i<m;i++)
for( j=0;j<m;j++)
for( k=0;k<n;k++)
c[i][j] = c[i][j]+a[i][k]*b[k][i];
return c[8][8];
}
*/
DCT.rar_C++ dct图像处理_DCT图像处理_dct 图像处理
版权申诉
101 浏览量
2022-09-19
18:05:22
上传
评论
收藏 846B RAR 举报
Kinonoyomeo
- 粉丝: 77
- 资源: 1万+
最新资源
- 微信小程序 - 图书管理系统源码.zip
- 微信小程序 - 图片自适应 ,富文本解析源码.zip
- 微信小程序 - 同乐居商城:购物车合算源码
- 1、根据输入的三条边值判断能组成何种三角形,并设计测试数据进行判定覆盖测试 三条边为变量a、b、c,范围为1≤边值≤10,不在范
- SQL server 练习题目8道(小白教学).zip
- Python 手写实现 iD3 决策树算法-根据信息增益公式.zip
- 411675952289057车联助手-小窗版(三星)3.5.1.apk
- 三种快速排序方法合并在一个文件中以便直接运行的Python代码示例
- 937712277954201实习5.word
- 2程序语言基础知识pdf1_1716337722703.jpeg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0