2013-10-02 3 views
1

У меня есть ilnumerics симметричной матрицы двойного типа, чтоКак найти максимальное значение в симметрической матрице ilnumerics?

100  90,38000 87,27000 44,23000 34,62000 30,77000 
90,38000  100 90,91000 34,62000 44,23000 34,62000 
87,27000 90,91000  100 36,36000 38,18000 47,27000 
34,62000 44,23000 38,18000 89,80000  100 90,38000 
30,77000 34,62000 47,27000 86,54000 90,38000  100 

Я хочу, чтобы найти максимальное значение. Я использую

ILNumerics.ILRetArray<double> maxValue = ILNumerics.ILMath.maxall(matrixSimilarity); 

результат равен MaxValue = 100. я хочу привести, не принимая значения по диагонали => MaxValue = 90,91

Как сделать это с помощью функции ilnumerics в C#?

+0

Следите за объявлением переменной. В основном вы будете использовать ILArray . ILRetArray используется только в объявлениях функций. См .: http://ilnumerics.net/GeneralRules.html –

ответ

2

Там может быть быстрее пути к результату, но это будет работать:

ILArray<double> E = counter(5, 5); 

E теперь:

<Double> [5,5] 
    [0]:   1   6   11   16   21 
    [1]:   2   7   12   17   22 
    [2]:   3   8   13   18   23 
    [3]:   4   9   14   19   24 
    [4]:   5   10   15   20   25 

Скопировать в новую переменную, изменять диагонали и получить максимальное значение :

// make a copy of E 
ILArray<double> maxE = E.C; 
// set diagonal of the copy to smallest value 
maxE[r(0,maxE.S[0]+1,numel(maxE)-1)] = minall(maxE); 
// compute the max value 
maxE = maxall(maxE); 

>maxE 
<Double>   24 

Обратите внимание, код, как ожидается, чтобы выполняться в контексте подкласса ILMath , как обычно.

Смежные вопросы