У меня есть 2-х весовые функции вероятности из 2-х категорий. Я пытаюсь построить контуры, чтобы визуализировать их (например, на их половине высоты, но на самом деле не имеет значения).несколько графиков контура matlab с одним уровнем
Я не хочу использовать contourf
для прямой печати, потому что я хочу контролировать цвет заливки и непрозрачность. Поэтому я использую contourc
для генерации координат xy, а затем используя fill
с этими координатами xy.
Проблема в том, что координаты xy из функции contourc
имеют в них странные числа, которые вызывают нанесение следующих странных вершин.
Сначала я думал, что это был странный формат contourmatrix, но я не думаю, что это, как я прошу только одного значения из contourc
. Например ...
contourmatrix = contourc(x, y, Z, [val, val]);
h = fill(contourmatrix(1,:), contourmatrix(2,:), 'r');
Кто-нибудь знает, почему contourmatrix
имеет эти нечетные значения в них, когда я прошу только одного контура?
UPDATE:
Моя проблема кажется может быть режим Провал contourc
, когда входной 2D матрица не «гладко». Мои исходные данные представляют собой большой набор (x, y) точек. Затем я создаю 2D-матрицу с некоторой функцией hist2d. Но когда это шумное проблема преувеличена ...
Но когда я использую функцию 2d плотности ядра, чтобы привести к более плавному 2D функции, проблема уменьшается ...
полный процесс а) у меня есть набор (х, у) точек, которые образуют образцы из распределения б) преобразовать это в 2D PMF с) создать contourmatrix с использованием contourc
г) участок с использованием fill
могли бы вы предоставить простой пример с образцами данных – Hoki
Спасибо за добавление информации, но это на самом деле не позволяют нам помочь до тех пор, как мы делаем не имеют данных, необходимых для воспроизведения вашей проблемы. Так что либо загрузите набор данных где-нибудь (google drive/dropbox, ...), поделитесь ссылкой и покажите код, используемый для создания вашей фигуры, или составите более простой пример с образцами данных, которые легко сгенерировать. В любом случае нам нужно увидеть ваш код, чтобы узнать, что происходит не так. – Hoki
хотя я подозреваю, что ваши паразитные линии исходят из опорных точек. Посмотрите внимательно на структуру ContourMatrix, некоторые точки там не являются координатами, а указывают уровень и количество точек, которые следует учитывать для данного профиля. Эти пункты не должны включаться в команду 'fill'. Поэтому, отправляя 'contourmatrix (1, :)' в функцию заполнения, вы отправляете дополнительные баллы. Если контур определяется только одной формой, вы должны использовать по крайней мере 'contourmatrix (1,2: end)' (не отправляйте первый столбец). Если существует более одной формы для изолеста, вам нужно проанализировать матрицу контура. – Hoki