


How to use arrays to implement matrix mathematical operations in PHP
This article mainly introduces the method of PHP using arrays to implement matrix mathematical operations, and analyzes the related operating skills of PHP based on arrays to implement matrix representation and operations based on specific examples. Friends in need can refer to the following
The details are as follows:
Matrix operation is to perform some kind of mathematical operation on two data tables and obtain another data table.
In the following example, we have created a basically complete matrix operation function library so that Programs for matrix operations.
From PHP5 in Practice (U.S.)Elliott III & Jonathan D.Eisenhamer
<?php // A Library of Matrix Math functions. // All assume a Matrix defined by a 2 dimensional array, where the first // index (array[x]) are the rows and the second index (array[x][y]) // are the columns // First create a few helper functions // A function to determine if a matrix is well formed. That is to say that // it is perfectly rectangular with no missing values: function _matrix_well_formed($matrix) { // If this is not an array, it is badly formed, return false. if (!(is_array($matrix))) { return false; } else { // Count the number of rows. $rows = count($matrix); // Now loop through each row: for ($r = 0; $r < $rows; $r++) { // Make sure that this row is set, and an array. Checking to // see if it is set is ensuring that this is a 0 based // numerically indexed array. if (!(isset($matrix[$r]) && is_array($matrix[$r]))) { return false; } else { // If this is row 0, calculate the columns in it: if ($r == 0) { $cols = count($matrix[$r]); // Ensure that the number of columns is identical else exit } elseif (count($matrix[$r]) != $cols) { return false; } // Now, loop through all the columns for this row for ($c = 0; $c < $cols; $c++) { // Ensure this entry is set, and a number if (!(isset($matrix[$r][$c]) && is_numeric($matrix[$r][$c]))) { return false; } } } } } // Ok, if we actually made it this far, then we have not found // anything wrong with the matrix. return true; } // A function to return the rows in a matrix - // Does not check for validity, it assumes the matrix is well formed. function _matrix_rows($matrix) { return count($matrix); } // A function to return the columns in a matrix - // Does not check for validity, it assumes the matrix is well formed. function _matrix_columns($matrix) { return count($matrix[0]); } // This function performs operations on matrix elements, such as addition // or subtraction. To use it, pass it 2 matrices, and the operation you // wish to perform, as a string: '+', '-' function matrix_element_operation($a, $b, $operation) { // Verify both matrices are well formed $valid = false; if (_matrix_well_formed($a) && _matrix_well_formed($b)) { // Make sure they have the same number of columns & rows $rows = _matrix_rows($a); $columns = _matrix_columns($a); if (($rows == _matrix_rows($b)) && ($columns == _matrix_columns($b))) { // We have a valid setup for continuing with element math $valid = true; } } // If invalid, return false if (!($valid)) { return false; } // For each element in the matrices perform the operatoin on the // corresponding element in the other array to it: for ($r = 0; $r < $rows; $r++) { for ($c = 0; $c < $columns; $c++) { eval('$a[$r][$c] '.$operation.'= $b[$r][$c];'); } } // Return the finished matrix: return $a; } // This function performs full matrix operations, such as matrix addition // or matrix multiplication. As above, pass it to matrices and the // operation: '*', '-', '+' function matrix_operation($a, $b, $operation) { // Verify both matrices are well formed $valid = false; if (_matrix_well_formed($a) && _matrix_well_formed($b)) { // Make sure they have complementary numbers of rows and columns. // The number of rows in A should be the number of columns in B $rows = _matrix_rows($a); $columns = _matrix_columns($a); if (($columns == _matrix_rows($b)) && ($rows == _matrix_columns($b))) { // We have a valid setup for continuing $valid = true; } } // If invalid, return false if (!($valid)) { return false; } // Create a blank matrix the appropriate size, initialized to 0 $new = array_fill(0, $rows, array_fill(0, $rows, 0)); // For each row in a ... for ($r = 0; $r < $rows; $r++) { // For each column in b ... for ($c = 0; $c < $rows; $c++) { // Take each member of column b, with each member of row a // and add the results, storing this in the new table: // Loop over each column in A ... for ($ac = 0; $ac < $columns; $ac++) { // Evaluate the operation eval('$new[$r][$c] += $a[$r][$ac] '. $operation.' $b[$ac][$c];'); } } } // Return the finished matrix: return $new; } // A function to perform scalar operations. This means that you take the scalar value, // and the operation provided, and apply it to every element. function matrix_scalar_operation($matrix, $scalar, $operation) { // Verify it is well formed if (_matrix_well_formed($matrix)) { $rows = _matrix_rows($matrix); $columns = _matrix_columns($matrix); // For each element in the matrix, multiply by the scalar for ($r = 0; $r < $rows; $r++) { for ($c = 0; $c < $columns; $c++) { eval('$matrix[$r][$c] '.$operation.'= $scalar;'); } } // Return the finished matrix: return $matrix; } else { // It wasn't well formed: return false; } } // A handy function for printing matrices (As an HTML table) function matrix_print($matrix) { // Verify it is well formed if (_matrix_well_formed($matrix)) { $rows = _matrix_rows($matrix); $columns = _matrix_columns($matrix); // Start the table echo '<table>'; // For each row in the matrix: for ($r = 0; $r < $rows; $r++) { // Begin the row: echo '<tr>'; // For each column in this row for ($c = 0; $c < $columns; $c++) { // Echo the element: echo "<td>{$matrix[$r][$c]}</td>"; } // End the row. echo '</tr>'; } // End the table. echo "</table>/n"; } else { // It wasn't well formed: return false; } } // Let's do some testing. First prepare some formatting: echo "<mce:style><!-- table { border: 1px solid black; margin: 20px; } td { text-align: center; } --></mce:style><style mce_bogus="1">table { border: 1px solid black; margin: 20px; } td { text-align: center; }</style>/n"; // Now let's test element operations. We need identical sized matrices: $m1 = array( array(5, 3, 2), array(3, 0, 4), array(1, 5, 2), ); $m2 = array( array(4, 9, 5), array(7, 5, 0), array(2, 2, 8), ); // Element addition should give us: 9 12 7 // 10 5 4 // 3 7 10 matrix_print(matrix_element_operation($m1, $m2, '+')); // Element subtraction should give us: 1 -6 -3 // -4 -5 4 // -1 3 -6 matrix_print(matrix_element_operation($m1, $m2, '-')); // Do a scalar multiplication on the 2nd matrix: 8 18 10 // 14 10 0 // 4 4 16 matrix_print(matrix_scalar_operation($m2, 2, '*')); // Define some matrices for full matrix operations. // Need to be complements of each other: $m3 = array( array(1, 3, 5), array(-2, 5, 1), ); $m4 = array( array(1, 2), array(-2, 8), array(1, 1), ); // Matrix multiplication gives: 0 31 // -11 37 matrix_print(matrix_operation($m3, $m4, '*')); // Matrix addition gives: 9 20 // 4 15 matrix_print(matrix_operation($m3, $m4, '+')); ?>
Related recommendations:
Example of how PHP implements clockwise printing of matrix (spiralmatrix)
PHP implements graph adjacencyMatrixRepresentation and traversal algorithm
PHP implements two-dimensional arrayMatrixMethods and cases of transposition operation
The above is the detailed content of How to use arrays to implement matrix mathematical operations in PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.
