Mercurial > hg > ishara
annotate dsp/fouriermat.m @ 61:eff6bddf82e3 tip
Finally implemented perceptual brightness thing.
author | samer |
---|---|
date | Sun, 11 Oct 2015 10:20:42 +0100 |
parents | c3b0cd708782 |
children |
rev | line source |
---|---|
samer@32 | 1 function A=fouriermat(N) |
samer@32 | 2 % fouriermat(N): return N*N real fourier basis |
samer@32 | 3 % |
samer@32 | 4 % fouriermat :: N:natural -> [[N,N]]. |
samer@32 | 5 |
samer@32 | 6 if rem(N,2) |
samer@32 | 7 % for odd N |
samer@32 | 8 A=ones(n,1); |
samer@32 | 9 |
samer@32 | 10 t=(0:n-1)'; |
samer@32 | 11 for k=1:floor((n-1)/2) |
samer@32 | 12 a=exp(2*i*pi*k*t/n); |
samer@32 | 13 A=[A real(a) imag(a)]; |
samer@32 | 14 end |
samer@32 | 15 if mod(n,2)==0, |
samer@32 | 16 A=[A repmat([1; -1],[n/2 1])]; |
samer@32 | 17 end |
samer@32 | 18 |
samer@32 | 19 A=A*diag(1./sqrt(sum(A.^2))); |
samer@32 | 20 else |
samer@32 | 21 % for even N. ought to fix this for odd N |
samer@32 | 22 A=zeros(N,N); |
samer@32 | 23 A(1,1)=1; |
samer@32 | 24 A(N/2+1,N)=1; |
samer@32 | 25 sq2=sqrt(2)/2; |
samer@32 | 26 for j=2:N/2 |
samer@32 | 27 A(j,2*j-2)=sq2; |
samer@32 | 28 A(2+N-j,2*j-2)=sq2; |
samer@32 | 29 A(j,2*j-1)=sq2*i; |
samer@32 | 30 A(2+N-j,2*j-1)=-sq2*i; |
samer@32 | 31 end |
samer@32 | 32 A=real(fft(A)/sqrt(N)); |
samer@32 | 33 end |
samer@32 | 34 |
samer@32 | 35 |