我实现了离散Rajan变换及其逆。但是当我尝试在不同的脚本中使用这些函数时,我得到了不同的结果。我已经分配了一个名为" array"的行矩阵。有8个元素。当我将这个数组传递给函数" drt"它给出了不同的结果,当我对这8个元素进行硬连接时,结果是不同的。
array =
123 118 114 112 108 105 105 90
drt(array)
ans =
Columns 1 through 26
255 0 33 0 59 0 6 6 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0
Columns 27 through 32
0 0 0 0 0 1
drt([123,118,114,112,108,105,105,90])
ans =
Columns 1 through 22
875 25 33 9 59 11 15 3 0 0 0 0 1 1 1 1 0 0 1 1 0 0
Columns 23 through 32
drt()
的代码:
function [y]=drt(x)
N=8;
for i=1:4
y1(i)=x(i)+x(i+4);
y1(i+4)=abs(x(i)-x(i+4));
e1(i)=0;
e1(i+4)=x(i)>x(i+4);
end
for i=1:2
y2(i)=y1(i)+y1(i+(N/4));
y2(i+2)=abs(y1(i)-y1(i+N/4));
e2(i)=0;
e2(i+2)=y1(i)>y1(i+2);
end
for i=5:6
y2(i)=y1(i)+y1(i+(N/4));
y2(i+N/4)=abs(y1(i)-y1(i+N/4));
e2(i)=0;
e2(i+2)=y1(i)>y1(i+2);
end
for i=1:2:7
y3(i)=y2(i)+y2(i+1);
y3(i+1)=abs(y2(i)-y2(i+1));
e3(i)=0;
e3(i+1)=y2(i)>y2(i+1);
end
y=[y3 e1 e2 e3];