Простой способ поменять строки в матрице для F # - PullRequest
3 голосов
/ 01 июня 2010

Есть ли простой способ поменять строки матрицы в F #?

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

Вот еще один способ использования функции-члена PermuteRows типа Matrix:

let m = Matrix.init 10 10 (fun x y -> float(x * 10 + y))
let m2 = m.PermuteRows (fun i -> 9 - i) 

Вам необходимо предоставить функцию отображения строк, здесь (i -> 9 - i).

2 голосов
/ 01 июня 2010

Синтаксис срезов можно использовать для манипулирования целыми строками / столбцами матрицы:

// Create sample matrix
let m = Matrix.init 10 10 (fun x y -> float(x * 10 + y))
// Overwrite first row with the second row
m.[0..0, 0..9] <- m.[1..1, 0..9]

Синтаксис нарезки позволяет вам выбрать часть матрицы - в этом случае мы выбираем матрицу с высотой 1, но вы можете использовать функцию более широко (часть не должна быть одиночной колонка ряд). Я не думаю, что существует какая-либо существующая функция для перестановки двух строк, но вы можете использовать кусочки и реализовать ее следующим образом:

let swap (m:matrix) a b = 
  let tmp = m.[a..a, 1..9]
  m.[a..a, 1..9] <- m.[b..b, 1..9]
  m.[b..b, 1..9] <- tmp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...