public static function MatrixUtility::cumulativeSum in Image Effects 8.2
Same name and namespace in other branches
- 8.3 src/Component/MatrixUtility.php \Drupal\image_effects\Component\MatrixUtility::cumulativeSum()
- 8 src/Component/MatrixUtility.php \Drupal\image_effects\Component\MatrixUtility::cumulativeSum()
Calculates the cumulative sum matrix of a bi-dimensional matrix.
Parameters
array $matrix: A simple array of matrix rows values. Each row is a simple array of numeric values.
Return value
array A matrix representing the cumulative sum of the input matrix, in the form of a simple array of matrix rows values. Each row is a simple array of numeric values.
See also
https://stackoverflow.com/questions/39937212/maximum-subarray-of-size-hx...
2 calls to MatrixUtility::cumulativeSum()
- GDOperationTrait::getEntropyCropByGridding in src/
Plugin/ ImageToolkit/ Operation/ gd/ GDOperationTrait.php - Computes the entropy crop of an image, using recursive gridding.
- MatrixUtilityTest::testCumulativeSum in tests/
src/ Unit/ MatrixUtilityTest.php - @covers ::cumulativeSum @dataProvider cumulativeSumProvider
File
- src/
Component/ MatrixUtility.php, line 24
Class
- MatrixUtility
- Matrix handling methods for image_effects.
Namespace
Drupal\image_effects\ComponentCode
public static function cumulativeSum(array $matrix) {
$matrix_rows = count($matrix);
$matrix_columns = count($matrix[0]);
$cumulative_sum_matrix = [];
for ($r = 0; $r < $matrix_rows; $r++) {
for ($c = 0; $c < $matrix_columns; $c++) {
if ($r === 0 && $c === 0) {
$cumulative_sum_matrix[$r][$c] = $matrix[$r][$c];
}
elseif ($r == 0) {
$cumulative_sum_matrix[$r][$c] = $cumulative_sum_matrix[$r][$c - 1] + $matrix[$r][$c];
}
elseif ($c == 0) {
$cumulative_sum_matrix[$r][$c] = $cumulative_sum_matrix[$r - 1][$c] + $matrix[$r][$c];
}
else {
$cumulative_sum_matrix[$r][$c] = $cumulative_sum_matrix[$r - 1][$c] + $cumulative_sum_matrix[$r][$c - 1] - $cumulative_sum_matrix[$r - 1][$c - 1] + $matrix[$r][$c];
}
}
}
return $cumulative_sum_matrix;
}