function obj = Make3DData(N, factor) %------------------------ % This function makes a 3D data set, a noisy box in a ball. % noisy ball ------------ % Input: N - dyadic side of a cube (N=32,64,128 and if you have % good computer 512) % factor - level of noise, affects boundaries and the interiors % of 3D shapes (factor = 0.5 is reasonable). % Usage: > object = Make3DData(64, 0.5) % % To view the object you may want to make MOVIE with frames taken % along the third dimension. % % > for i = 1:N %N is the same as in the input of Make3DData % > imagesc( obj(:,:,i) ); % > axis equal % > axis off % > M(:,i) = getframe; % > end % % To view: > movie(M) %----------------------------------- obj = factor.*randn(N,N,N); for i = -N/2+1:N/2 for j = -N/2+1:N/2 for k = -N/2+1:N/2 if i^2 + j^2 + k^2 < (N/2 + factor*randn - 1)^2 obj(i+N/2,j+N/2,k+N/2) = 1 + factor*randn; end if abs(i)+abs(j)+abs(k) < (N/2 + factor*randn - 1) obj(i+N/2,j+N/2,k+N/2) = 4 + factor*randn; end end end end % % % Vicki Yang and Brani Vidakovic % ISyE, GaTech 2002.