⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcta.m

📁 H.264完整的C语言代码和DCT的代码
💻 M
字号:
% dcta.m
%   Test out a fast 1-d dct algorithm for the imagine chip implementation
%   From Pennebaker/Mitchell, pg. 50-52.  See also Arai, Agui, Nakajima

% This algorithm is based on the 16-pt DFT.  Basically, the 8-pt DCT can
%   be calculated by scaling the real parts of the output of the 16-pt DFT.

a = [3 2 7 5 3 2 7 8];

% The addressing is messed up because of the way Matlab starts
%   vector indices at 1 instead of 0.
s07 = a(1) + a(8);
s16 = a(2) + a(7);
s25 = a(3) + a(6);
s34 = a(4) + a(5);
s0734 = s07 + s34;
s1625 = s16 + s25;

d07 = a(1) - a(8);
d16 = a(2) - a(7);
d25 = a(3) - a(6);
d34 = a(4) - a(5);
d0734 = s07 - s34;
d1625 = s16 - s25;
sd1607 = d16 + d07;
sd2534 = d25 + d34;

C1 = cos(2*pi/8);
C2 = cos(3*pi/8);
C3 = cos(pi/8) + cos(3*pi/8);
C4 = cos(pi/8) - cos(3*pi/8);

m1 = s0734 + s1625;
m2 = s0734 - s1625;
m3 = d0734;
m4 = d07;
m5 = C1 * (d1625 + d0734);
m6 = C1 * (d25 + d16);
m7 = C2 * (sd1607 - sd2534);
m8 = C3 * sd1607;
m9 = C4 * sd2534;

s5 = m4 + m6;
s6 = m4 - m6;
s7 = m8 - m7;
s8 = m9 - m7;

% calculate DFT results
F(1) = m1;
F(2) = (s5 + s7);
F(3) = (m3 + m5);
F(4) = (s6 - s8);
F(5) = m2;
F(6) = (s6 + s8);
F(7) = (m3 - m5);
F(8) = (s5 - s7);

% scaling factors
k(1:8) = 0.25 * sec(((0:7) * pi) / (2 * 8));
k(1) = k(1) * sqrt(2);

% calculate final DCT results
b(1:8) = F(1:8) .* k(1:8);

b
dct(a)
dct(a) ./ b
sum(abs(dct(a) - b))

sum(a(1:8))/(sqrt(2)*2)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -