Функция plot
позволяет строить все маркеры с постоянным размером s
.Эффективно маркеры разного размера
figure;
x = -10 : 10;
y = x .^ 2;
s = 10;
plot(x, y, 'bo', 'MarkerSize', s);
Предположим, вместо этого мы хотели бы каждый маркер, чтобы иметь какой-то индивидуальный размер sx
. Например, sx = abs(x) + 1
.
Одним из способов достижения этого является использование цикла for.
figure;
x = -10 : 10;
y = x .^ 2;
sx = abs(x) + 1;
hold on;
for i = 1 : length(x)
plot(x(i), y(i), 'bo', 'MarkerSize', sx(i));
end
Это работает достаточно хорошо для небольшого числа x
. Однако, что, если x
больше? Например, x = -100 : 0.01 : 100
.
Это займет значительно больше времени, в то время как plot(x, y, 'bo', 'MarkerSize', 100)
все равно будет завершено почти мгновенно. В идеале мы могли бы сделать что-то вроде plot(x, y, 'bo', 'MarkerSize', sx)
, где sx
- это вектор размеров с каждой записью в sx
, соответствующей записи в x
и y
. К сожалению, это даст ошибку Value not a numeric scalar
.
Есть ли эффективный способ построения маркеров, где каждый маркер имеет разные индивидуальные размеры?