blob: 3f007faaf0fd34fc20a11e0fc494fb7d128ef593 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/*Description
This function computes the inverse discrete cosine transform of input X.
If N is given, then X is padded or trimmed to length N before computing the transform.
If X is a matrix, compute the transform along the columns of the the matrix.
The transform is faster if X is real-valued and even length.
Calling Sequence
Y = idct1(X)
Y = idct1(X, N)
Parameters
X: Matrix or integer
N: If N is given, then X is padded or trimmed to length N before computing the transform.
Examples
idct1([1,3,6])
ans =
5.1481604 - 4.3216292 0.9055197
*/
function y = idct1(x,n)
funcprot(0);
rhs=argn(2);
if (rhs<1 | rhs>2) then
error("Wrong number of input arguments.");
end
nsdim=1;
siz=size(x);
len=length(siz);
for i=1:len
if siz(i) ~= 1 then
nsdim=i//calculating along non-singlton dimension
break;
end;
end;
select(rhs)
case 1 then
y=idct(x,nsdim);
case 2 then
siz(nsdim)=n;
y=idct(resize_matrix(x,siz),nsdim)
end;
endfunction
|