Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Евклидово расстояние_ рассчёт / 5 сообщений из 5, страница 1 из 1
11.07.2017, 17:15
    #39486809
alexkay3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Евклидово расстояние_ рассчёт
Уважаемые форумчане!
Возникла необходимость написание программы по созданию запроса по расчёту Евклидового расстояния.

Условие: Есть некий запрос, так называемый, матрица значений. Он имеет стандартное количество столбцов (15), но может иметь разное количество строк (от 2 до 200).

Необходимо: Рассчитать матрицу расстояний по Евклиду. Для лучшего понимания, прикреплю файл EXCELL.
Как Вы видите из файла, в результате расчёта, матрица значений преобразуется в вид (кол-во строк Х кол-во строк). То есть если в запросе (матрица значений) будет к примеру 3 строки, то матрица расстояний будет иметь вид (3 х 3). Кроме того, диагональ матрицы будет равна 0.

Большая просьба, помогите либо в написании программы по расчёту, либо в построении запроса (-ов) для вычисления этой задачи. Навыков программирования практически нет.
...
Рейтинг: 0 / 0
11.07.2017, 23:41
    #39487047
alexkay3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Евклидово расстояние_ рассчёт
Спасибо Вам за внимание!
Я как бы файл excel прилепил для лучшей понимаемости вопроса :), ну да ладно, попытаюсь изложить на пальцах.
Покажу на примере матрицы 4х3, для других (больших матриц) подход такой же.

Описание и формулы в файле word
...
Рейтинг: 0 / 0
12.07.2017, 01:54
    #39487083
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Евклидово расстояние_ рассчёт
alexkay3,
псевдокод
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Dim X, A
Dim rows As Integer, cols As Integer
Dim i As Integer, j As Integer

rows = 3
cols = 4

ReDim X(1 To rows, 1 To cols) As Double

' fill in X

ReDim A(1 To rows, 1 To rows) As Double

For i = 1 To rows
  For j = 1 To i
    If i = j Then
        A(i, j) = 0
    Else
        A(i, j) = euclide(X, i, j, cols)
        A(j, i) = A(i, j)
    End If
  Next j
Next i

' ============================
Function euclide(X, v1 As Integer, v2 As Integer, number_of_attributes As Integer) As Double
    Dim accum As Double, diff As Double
    Dim i As Integer, j As Integer
    accum = 0
    For i = 1 To number_of_attributes
        diff = X(v1, i) - X(v2, i)
        accum = accum + diff * diff / number_of_attributes
    Next i
    
    euclide = Sqr(accum)
End Function
...
Рейтинг: 0 / 0
12.07.2017, 06:54
    #39487099
alexkay3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Евклидово расстояние_ рассчёт
Спасибо, попробую Ваш код, позже отпишусь
...
Рейтинг: 0 / 0
12.07.2017, 14:55
    #39487584
alexkay3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Евклидово расстояние_ рассчёт
Спасибо, попробую Ваш код, позже отпишусь
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Евклидово расстояние_ рассчёт / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]