У меня есть матрица m, и я хочу иметь определяемую пользователем функцию, которая позволяет мне контролировать элементы, которые умножаются на значение.
Функция matrix:set-and-report
выглядит многообещающе, но я не знаю, как реализовать ее для нескольких элементов.
Например, я хотел бы умножить первые 3 элемента матрицы на -1, чтобы перейти от этого:
let m matrix:from-row-list [1 2 3 4 5 6]
print m
к этому:
let n matrix:from-row-list [-1 -2 -3 4 5 6]
С matrix:set-and-report
вы действительно были очень близки к решению. Пожалуйста, проверьте пример, я надеюсь, что это то, что вы искали. Функция отчета имеет матрицу в качестве входных данных. Чем вы указываете строку, чем индекс, где вы хотите начать умножение, где его закончить, и, наконец, множитель.
Extensions [
matrix
]
to test
let m matrix:from-row-list [ [1 2 3 4 5 6] [1 2 3 4 5 6] ]
print (word "original matrix " m)
print (word "modified matrix " matrix-row-manipulation m 0 0 3 -1)
end
to-report matrix-row-manipulation [matrix row columen-index-start columen-index-end multiplier]
let index (range columen-index-start columen-index-end 1)
foreach index [ i ->
set matrix matrix:set-and-report matrix row i (matrix:get matrix row i * multiplier )
]
report matrix
end
Это вернет вам:
observer> test
original matrix {{matrix: [ [ 1 2 3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}
modified matrix {{matrix: [ [ -1 -2 -3 4 5 6 ][ 1 2 3 4 5 6 ] ]}}