a)输出原始数据.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
a)输出原始数据

#include stdio.h #include math.h #define PI 3.1415926 #define N 8 void yuanshi int a[][8] //输出原始数据 int i,j; for i 0;i 8;i++ for j 0;j 8;j++ printf %d ,a[i][j] ; if j 7 printf \n ; void DCT int f[8][8],float m[8][8] //DCT变换子程序 int x,y,i,j,l; float coff[8][8],doff[8][8],D[8][8] 0 ; for y 0;y N;y++ //计算第一行的coff coff[0][y] sqrt 2.0 /sqrt N * sqrt 1.0 /sqrt 2.0 ; for x 1;x N;x++ //计算后面N-1行的coff for y 0;y N;y++ coff[x][y] sqrt 2.0 /sqrt N *cos 2* y+1 -1 *x*PI/ 2*N ; printf COFF: \n ; //输出矩阵coff for i 0;i N;i++ for j 0;j N;j++ printf %f ,coff[i][j] ; if j 7 printf \n ; for x 0;x N;x++ //求coff的转置矩阵doff for y 0;y N;y++ doff[x][y] coff[y][x]; for i 0;i N;i++ //矩阵doff和f矩阵相乘,结果为矩阵D for l 0;l N;l++ D[i][l] 0; for j 0;j N;j++ D[i][l] D[i][l]+doff[i][j]* 1.0*f[j][l] ; printf \n ; for i 0;i N;i++ //矩阵D和矩阵coff相乘,结果为矩阵m,即经过DCT变换//得到的矩阵 for l 0;l N;l++ m[i][l] 0; for j 0;j N;j++ m[i][l] m[i][l]+D[i][j]*coff[j][l]; printf 输出DCT矩阵\n ; for i 0;i N;i++ //输出经过DCT变换的结果矩阵m for l 0;l N;l++ printf %f ,m[i][l] ; printf \n ; void sch int te[8][8],float m[8][8],int n[8][8] //量化子程序 int x,y; int tr[8][8] ; for x 0;x N;x++ for y 0;y N;y++ tr[x][y] int m[x][y]/te[x][y] ; n[x][y] tr[x][y]; printf %d ,tr[x][y] ; if y 7 printf \n ; int bianma int n[8][8],int c[] //一维行程编码 int k[64],a[128],i,j,t 0,e 1,d 0,l; for i 0;i N;i++ //把二维的编码数组转换成一维数组 for j 0;j N;j++ k[t++] n[i][j]; for i 0;i 64;i++ //计算编码后的数据,将其存在数组a中 l i+1; if k[i] k[l] e++; else a[d++] e; a[d++] k[i]; e 1; printf 编码输出:\n ; for i 0;i d;i++ //输出编码后的数据 printf %d ,a[i] ; c[i] a[i];//把得到的编码后的数组a的值复制到数组c中 printf \n ; return d;//返回数组c的长度 void main /*8*8图像块数据如下*/ float m[8][8],b[8][8]; int Y 128,i 0,j 0,s,number,n[8][8],c[52],data; int a[][8] 130,130,130,129,134,133,129,130 , 130,130,130,129,134,133,130,130 , 130,130,130,129,132,132,130,130 , 129,130,130,129,130,130,129,129 , 127,128,127,129,131,129,131,130 , 127,128,127,128,127,128,132,132 , 125,126,129,129,127,129,133,132 , 127,125

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档