function data = twospirals(N, degrees, start, noise) % Generate "two spirals" dataset with N instances. % degrees controls the length of the spirals % start determines how far from the origin the spirals start, in degrees % noise displaces the instances from the spiral. % 0 is no noise, at 1 the spirals will start overlapping if nargin < 1 N = 2000; end if nargin < 2 degrees = 570; end if nargin < 3 start = 90; end if nargin < 5 noise = 0.2; end deg2rad = (2*pi)/360; start = start * deg2rad; N1 = floor(N/2); N2 = N-N1; n = start + sqrt(rand(N1,1)) * degrees * deg2rad; d1 = [-cos(n).*n + rand(N1,1)*noise sin(n).*n+rand(N1,1)*noise zeros(N1,1)]; n = start + sqrt(rand(N1,1)) * degrees * deg2rad; d2 = [cos(n).*n+rand(N2,1)*noise -sin(n).*n+rand(N2,1)*noise ones(N2,1)]; data = [d1/2;d2/2]; end