У вас есть несколько вариантов, в зависимости от ваших обстоятельств.Вы можете либо отсортировать данные, чтобы избежать разрывов, либо вставить несколько NaN
s в векторы X и Y.
Для сортировки:
[xSorted, ixsSort] = sort(x);
ySorted = y(ixSort);
plot(xSorted, ySorted);
Чтобы добавить nans, вам нужно проделать дополнительную работу, чтобы определить, где должны быть разрывы, а затем вставить NaN.Например, чтобы разбить строку после 10-й записи
xBroken = [x(1:10) nan x(11:end)];
yBroken = [y(1:10) nan y(11:end)];
plot(xBroken, yBroken);
Редактировать: см. Пример кода ниже для более полного примера.
Конечно, как легкорезервное копирование, просто сделайте точечный график вместо линейного графика:
plot(x, y, '.');
Некоторые примеры кода для метода 2 ниже:
%Some sample data
x = [1:10 2.1:11 3.2:12];
y = randn(size(x));
%Define where breaks are needed (and associated boundaries)
ixsBreaksNeeded = find(diff(x)<0);
ixsSegmentBoundaries = [0 ixsBreaksNeeded length(x)]; %This makes the iterations a lot easier
%Predefine some nan vectors to move data into
xBroken = nan(1, length(x) + length(ixsBreaksNeeded));
yBroken = nan(1, length(x) + length(ixsBreaksNeeded));
%Move data segments into nan vectors, leaving gaps between segments
ixOffset = 0;
for ix = 2:length(ixsSegmentBoundaries)
ixsOriginal = (ixsSegmentBoundaries(ix-1)+1):ixsSegmentBoundaries(ix);
xBroken(ixsOriginal + (ixOffset)) = x(ixsOriginal);
yBroken(ixsOriginal + (ixOffset)) = y(ixsOriginal);
ixOffset = ixOffset+1;
end
%Plot to demonstrate
subplot(211)
plot(x,y);
subplot(212)
plot(xBroken, yBroken)