% EE 438 Digital Signal Processing with Applications - Spring 2001
% 2-D signals and systems% Image display within Matlab% Initialize
% cos2dxcirc.m
% Spectrum of circ(x,y)*cos(ux+vy) 
%---------------------------------------------------------------
% Initialize
clear all;
close all;
%---------------------------------------------------------------
% Parameters
radius=32;	% radius of circle
degrees = 30;	% "direction" of cosine
P = 8;		% period of cosine
M = 256;	% dimensions of image (MxM)
%---------------------------------------------------------------
%Initialize colormap
mcomp = 0 : 1.0 ./ 255 : 1.0;   % output colors lie in [0,1]
map = [mcomp' mcomp' mcomp'];

index = (-M/2:1:M/2-1);
x = ones(M,1)*index;
y = x(:,end:-1:1)';
z = x.*x + y.*y <= radius.*radius;
theta = pi*degrees/180;
rho = 1/P;
u_0 = rho*cos(theta);
v_0 = rho*sin(theta);
f = 0.5 + 0.5*cos(2*pi*(u_0*x + v_0*y));
g=z.*f;

figure(1);
image(g*255);
colormap(map);
axis('off');
axis('image');
title('g(x,y)=0.5(1+cos(u_0x+v_0y))circ(x,y)')
g = fftshift(g);
G = fft2(g);
G = fftshift(G);
Gmag = abs(G);
Gmax = max(max(G));
decade = 2;
Gmag = Gmag/Gmax*10^decade + 1;
Gmag = log10(Gmag);
Gmax = max(max(Gmag));

figure(2);
image(Gmag*255/Gmax);
colormap(map);
axis('off');
axis('image');
title('log|G(u,v)|')
