function X=fast3DDCT(x)
% 实现了快速3D离散余弦变换,基于蝶形结构。
N=size(x,1);% 数据矩阵的维度
[k2 k1 k3]=meshgrid(0:N/2-1);
Sm=zeros(N/2,N/2,N/2,8);% 存储临时变量的矩阵
for n1=0:N/2-1
for n2=0:N/2-1
for n3=0:N/2-1
t1=pi/(2*N)*(4*n1+1);
t2=pi/(2*N)*(4*n2+1);
t3=pi/(2*N)*(4*n3+1);
ci0=cos(t1*(2*k1));
ci1=cos(t1*(2*k1+1));
cj0=cos(t2*(2*k2));
cj1=cos(t2*(2*k2+1));
cl0=cos(t3*(2*k3));
cl1=cos(t3*(2*k3+1));
i=0;j=0;l=0;
% 8个蝶形运算
Sm(:,:,:,1)=Sm(:,:,:,1)+xtildaijl(x,i,j,l,n1,n2,n3).*ci0.*cj0.*cl0;
i=0;j=0;l=1;
Sm(:,:,:,2)=Sm(:,:,:,2)+xtildaijl(x,i,j,l,n1,n2,n3).*ci0.*cj0.*cl1;
i=0;j=1;l=0;
Sm(:,:,:,3)=Sm(:,:,:,3)+xtildaijl(x,i,j,l,n1,n2,n3).*ci0.*cj1.*cl0;
i=0;j=1;l=1;
Sm(:,:,:,4)=Sm(:,:,:,4)+xtildaijl(x,i,j,l,n1,n2,n3).*ci0.*cj1.*cl1;
i=1;j=0;l=0;
Sm(:,:,:,5)=Sm(:,:,:,5)+xtildaijl(x,i,j,l,n1,n2,n3).*ci1.*cj0.*cl0;
i=1;j=0;l=1;
Sm(:,:,:,6)=Sm(:,:,:,6)+xtildaijl(x,i,j,l,n1,n2,n3).*ci1.*cj0.*cl1;
i=1;j=1;l=0;
Sm(:,:,:,7)=Sm(:,:,:,7)+xtildaijl(x,i,j,l,n1,n2,n3).*ci1.*cj1.*cl0;
i=1;j=1;l=1;
Sm(:,:,:,8)=Sm(:,:,:,8)+xtildaijl(x,i,j,l,n1,n2,n3).*ci1.*cj1.*cl1;
end
end
end
% 后处理部分
i=0;j=0;l=0;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,1);% 乘以常数系数,根据DCT公式
i=0;j=0;l=1;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,2);
i=0;j=1;l=0;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,3);
i=0;j=1;l=1;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,4);
i=1;j=0;l=0;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,5);
i=1;j=0;l=1;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,6);
i=1;j=1;l=0;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,7);
i=1;j=1;l=1;
x1=2*k1(1,1,1)+i+1;
x2=2*k1(end,1,1)+i+1;
y1=2*k2(1,1,1)+j+1;
y2=2*k2(1,end,1)+j+1;
z1=2*k3(1,1,1)+l+1;
z2=2*k3(1,1,end)+l+1;
yyX(x1:2:x2,y1:2:y2,z1:2:z2)=Sm(:,:,:,8);
% multiplly by constant coefficient according to dct formula
[k2 k1 k3]=meshgrid(0:N-1);
Q=ones(N,N,N);
Q(k1==0)=Q(k1==0)/sqrt(2);
Q(k2==0)=Q(k2==0)/sqrt(2);
Q(k3==0)=Q(k3==0)/sqrt(2);
X=yyX.*Q.*8/(N^3);
![avatar](https://profile-avatar.csdnimg.cn/6534a49295004b5796c3956cb3f87481_ccsss22.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
fpga和matlab
- 粉丝: 18w+
- 资源: 2656
最新资源
- 基于JavaScript、HTML、CSS的JavaScript代码库开发与设计源码技巧
- 基于Java和CSS的简易交易网站设计源码
- 基于Java和Vue的RuoYi-Vue新露营设计源码
- 基于Python的HTML、JavaScript、CSS的钢材电商信息网站设计源码
- 基于Java和HTML的校园维修管理系统设计源码
- 基于Python的Thuservices全栈设计源码包含HTML和JavaScript
- 基于Html、CSS、JavaScript的Iprimo结婚钻戒网站设计源码
- 基于Vue框架的电子病历评级前端页面设计源码
- 基于Vue框架的体育馆小程序设计源码
- 基于C++的贪吃蛇游戏设计源码分享
- 基于Vue框架的个人毕业设计源码展示
- 基于Vue框架的孕周计算及体重范围在线设计源码
- 基于HTML/CSS/JavaScript的线上购物详情及搭配选购套餐设计源码
- 基于Vue框架的transport-system-school-front智运先锋前端设计源码
- 基于Vue3+TypeScript的大学学生心理健康测试与咨询平台设计源码
- 基于Java语言的猫头鹰(Owl)设计模式实现源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)