2016-02-29 11 views
2

У меня есть набор точек данных (40 х 2), и я вывел формулу для решения границы, которая заканчивается так:Plotting линейной границы принятия

wk*X + w0 = 0 

wk является 1 х 2 и X - точка 2 x 1 от набора точек данных; в основном X = (xi,yi), где i = 1,2, ..., 40. У меня есть значения для wk и w0.

Я пытаюсь построить линию wk*X + w0 = 0, но я понятия не имею, как построить фактическую строку. Раньше я делал это, набирая минимальные и максимальные точки данных и просто соединял их вместе, но это определенно не правильный подход.

ответ

3

wk*X просто скалярное произведение между двумя векторами, и поэтому уравнение становится:

w1*x + w2*y + w0 = 0 

... предполагая общую точку (x,y). Если изменить это уравнение и решить для y, мы получим:

y = -(w1/w2)*x - (w0/w2) 

Таким образом, это определяет уравнение линии, где склон -(w1/w2) с перехватом -(w0/w2). Все, что вам нужно сделать, это определить связку линейно разнесенных точек в определенном диапазоне, взять каждую точку и подставить ее в вышеупомянутое уравнение и получить выход. Вы бы нарисовали все эти выходные точки на рисунке, а также сами фактические точки. Вы делаете пространство или разрешение между точками, достаточно маленькими, чтобы мы визуализировали линию, когда мы соединяем все точки вместе.

Чтобы определить диапазон или пределы этой линии, выясните, какое значение имеет самое маленькое и самое большое значение x, определите набор линейно разнесенных точек между ними и постройте линию, используя уравнение линии, которую мы только что говорили около.

Что-то подобное может работать при условии, что у вас есть матрица точек, хранящихся в X, как вы упомянули, и w1 и w2 определены в векторе wk и w0 определяется отдельно:

x = linspace(min(X(:,1)), max(X(:,1))); 
y = -(wk(1)/wk(2))*x - (w0/wk(2)); 
plot(X(:,1), X(:,2), 'b.', x, y); 

linspace определяет то, линейно разнесенный массив точек от начала до конца и по умолчанию генерируется 100 точек. Затем мы создаем выходные значения линии с учетом этих точек, и мы строим отдельные точки в синем, а также линию непосредственно поверх этих точек.

+0

Спасибо, что было очень прямолинейно! – newb

+0

Я здесь новый, как мне это сделать? – newb

+1

О, шучу, что я понял это – newb