2-D sinusoidal surface is just an sinus function in 2D domain. On the other words, it is image of two-dimensional function sin.

`function I=sinSurf(varargin)`

%create sinusoidal 2D function (image)

%INPUT

% - theta - angle in radians (default pi/2)

% - lambda - frequency (default 0.5)

% - Isize - output image size (default 256);

% - delta - phase (default 0.0);

%OUTPUT

% - I - double matrix double (-1..1) of sinusoidal function

theta=pi/2;

Isize = 256;

mag=0.5;

lambda=0.5;

delta=0;

if nargin >= 1

theta=varargin{1};

end

if nargin>=2

lambda=varargin{2};

end

if nargin>=3

Isize=varargin{3};

end

if nargin>=4

delta=varargin{4};

end

I=zeros(Isize,Isize);

cosa=cos(theta);

sina=sin(theta);

for x=1:Isize

for y=1:Isize

xprime = (x*cosa+y*sina)/Isize;

valu = mag*sin(2*pi*(xprime/lambda)-delta);

I(x,y)=valu;

end

end

Below some examples:

a) For: theta=pi/2;

`s=sinSurf();`

imshow(s,[-1 1]);colormap(jet);colorbar;

figure, mesh(s); axis([1 256 1 256 -1 1]); axis square;

b) For: theta=pi/4;

`s=sinSurf(pi/4);`

imshow(s,[-1 1]);colormap(jet);colorbar;

figure, mesh(s); axis([1 256 1 256 -1 1]); axis square;

c) For: theta=pi/2; lambda=0.25;

`s=sinSurf(pi/2,0.25);`

imshow(s,[-1 1]);colormap(jet);colorbar;

figure, mesh(s); axis([1 256 1 256 -1 1]); axis square;

Thank you very much for this great post!

ReplyDeleteThough the code is simple, its very fantastic in what one can do with it. Thanks for the post

ReplyDeleteThank you very much. It is helpful and so interesting.

ReplyDeleteUndefined function or method 'sinSurf' for input arguments of

ReplyDeletetype 'double'.

F#CK YOU