Skip to content

Instantly share code, notes, and snippets.

@thomvil
Created June 9, 2021 07:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thomvil/02890ea2873eed6bb155e7dc387c9564 to your computer and use it in GitHub Desktop.
Save thomvil/02890ea2873eed6bb155e7dc387c9564 to your computer and use it in GitHub Desktop.
function [res] = generate_variation(fouten_marge, len)
res = -10000 + (10000 - (-10000)) * rand(floor(len), 1);
res(abs(res) < 0.0001) = 1;
all_pos = sum(res > 0) == len;
all_neg = sum(res < 0) == len;
all_small = sum(abs(res) < 1) == len;
if all_pos || all_neg
res(1) = res(1) * -1;
res(len) = res(len) * -1;
end
if all_small
res(1) = 11;
res(len) = -19;
end
pos_sum = sum(res(res > 0));
neg_sum = sum(res(res < 0));
res(res < 0) = res(res < 0) / abs(neg_sum);
res(res > 0) = res(res > 0) / pos_sum;
[~, max_abs_i] = max(abs(res));
max_abs = res(max_abs_i);
delta = 0.1 + (abs(fouten_marge) - 0.1) * rand;
res = res / abs(max_abs) * delta;
end
function [res] = generate_variation2(fouten_marge, len)
res1 = 10000 - 1000 * rand(len, 1);
res2 = sign(-10000 + (10000 - (-10000)) * rand(len, 1));
res = res1 .* res2;
res(abs(res) < 0.0001) = 1;
all_pos = sum(res > 0) == len;
all_neg = sum(res < 0) == len;
all_small = sum(abs(res) < 1) == len;
if all_pos || all_neg
res(1) = res(1) * -1;
res(len) = res(len) * -1;
end
if all_small
res(1) = 11;
res(len) = -19;
end
pos_sum = sum(res(res > 0));
neg_sum = sum(res(res < 0));
res(res < 0) = res(res < 0) / abs(neg_sum);
res(res > 0) = res(res > 0) / pos_sum;
[~, max_abs_i] = max(abs(res));
max_abs = res(max_abs_i);
delta = 0.1 + (abs(fouten_marge) - 0.1) * rand;
res = res / abs(max_abs) * delta;
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment