У меня есть матрица, в которой некоторые значения имеют -1
как указание на ошибку. Обычно я бы просто использовал ylim([0 100])
, чтобы не отображать эти значения на моем графике, но при использовании линейного графика соединение все равно упадет до точки. Мне нужна диаграмма, состоящая из линий, а не точечная диаграмма. Есть ли простой способ игнорировать отрицательные значения при построении линии и подключать только положительные значения при использовании функции построения графика в MATLAB?
Я написал небольшой пример программы, которая ведет себя аналогичным образом, но способ, которым я использую, кажется немного «слишком сложным», и я хочу знать, есть ли более простой способ добиться этого. Он отлично работает, поскольку я помещаю значения в NaN
, и теперь значения x
и y
равны одинаковому количеству. Однако удаление или сортировка значений из вектора приведет к разному количеству значений x
и y
.
Я надеялся на модификацию или флаг или что-то в этом роде.
x = 2*rand(10) - rand(10)
xx = 10:10:100;
figure;
for i=1:length(x)
for j=1:length(x(i,:))
if x(i,j) < 0
x(i,j) = NaN;
end
end
end
plot(xx,x)
Обратите внимание, что это только пример, весь код будет слишком большим, чтобы размещать здесь.
При наличии несоответствующих значений x
(так что функция построения графика просто использует 1,2,3...
и т. Д. Для соответствующих значений y
) этого можно достичь, используя
plot(x(x>0))
В этом случае соответствующие значения разные, в реальном коде это измеренные данные, здесь я просто использую 10-й шаг для упрощения.
x = 2*rand(10) - rand(10)
xx = 10:10:100;
plot(xx,x(x>0))
Приведенный выше код приведет к ошибке с сообщением «Векторы должны быть одинаковой длины».