[Lutinmatrix-commits] r138 - in lutinmatrix/tags: . lutinmatrix-1.3 lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix
Author: chatellier Date: 2009-04-09 10:45:46 +0000 (Thu, 09 Apr 2009) New Revision: 138 Added: lutinmatrix/tags/lutinmatrix-1.3/ lutinmatrix/tags/lutinmatrix-1.3/pom.xml lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java Removed: lutinmatrix/tags/lutinmatrix-1.3/pom.xml lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java Log: [maven-release-plugin] copy for tag lutinmatrix-1.3 Copied: lutinmatrix/tags/lutinmatrix-1.3 (from rev 132, lutinmatrix/trunk) Deleted: lutinmatrix/tags/lutinmatrix-1.3/pom.xml =================================================================== --- lutinmatrix/trunk/pom.xml 2009-04-06 13:49:55 UTC (rev 132) +++ lutinmatrix/tags/lutinmatrix-1.3/pom.xml 2009-04-09 10:45:46 UTC (rev 138) @@ -1,232 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> - - <parent> - <groupId>org.codelutin</groupId> - <artifactId>lutinproject</artifactId> - <version>3.4</version> - </parent> - - <artifactId>lutinmatrix</artifactId> - <version>1.3-SNAPSHOT</version> - - <dependencies> - - <dependency> - <groupId>org.codelutin</groupId> - <artifactId>lutinutil</artifactId> - <version>${lutinutil.version}</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.4</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>commons-beanutils</groupId> - <artifactId>commons-beanutils</artifactId> - <version>1.8.0</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>commons-primitives</groupId> - <artifactId>commons-primitives</artifactId> - <version>1.0</version> - <scope>compile</scope> - </dependency> - - <!--Jaxx--> - <dependency> - <groupId>org.codelutin.jaxx</groupId> - <artifactId>jaxx-runtime-swing</artifactId> - <version>${jaxx.version}</version> - <scope>compile</scope> - </dependency> - - </dependencies> - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> - - <name>LutinMatrix</name> - <description>Librairie de matrice multi-dimensions.</description> - <inceptionYear>2004</inceptionYear> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> - - <packaging>jar</packaging> - - <properties> - <!-- id du projet du labs --> - <labs.id>63</labs.id> - <labs.project>${project.artifactId}</labs.project> - - <jaxx.version>1.3-SNAPSHOT</jaxx.version> - <i18n.version>0.9</i18n.version> - <lutinutil.version>1.0.3</lutinutil.version> - </properties> - - <build> - <plugins> - - <plugin> - <groupId>org.codelutin.jaxx</groupId> - <artifactId>maven-jaxx-plugin</artifactId> - <version>${jaxx.version}</version> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - <configuration> - <extraImports> - <value>jaxx.runtime.SwingUtil</value> - <value>static jaxx.runtime.Util.getStringValue</value> - </extraImports> - <addSourcesToClassPath>true</addSourcesToClassPath> - <addProjectClassPath>true</addProjectClassPath> - </configuration> - </execution> - </executions> - </plugin> - - <!-- plugin i18n --> - <plugin> - <groupId>org.codelutin</groupId> - <artifactId>maven-i18n-plugin</artifactId> - <version>${i18n.version}</version> - <executions> - <execution> - <goals> - <goal>parserJava</goal> - <goal>gen</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- Always process jrst files, but only called on pre-site phase --> - <plugin> - <groupId>org.codelutin</groupId> - <artifactId>maven-jrst-plugin</artifactId> - <version>0.8.4</version> - <configuration> - <defaultLocale>fr</defaultLocale> - </configuration> - <executions> - <execution> - <goals> - <goal>jrst</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <descriptors> - <descriptor>src/main/assembly/deps.xml</descriptor> - <descriptor>src/main/assembly/full.xml</descriptor> - </descriptors> - </configuration> - <executions> - <execution> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - <reporting> - <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>cobertura-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - </plugin> - </plugins> - </reporting> - - <!-- ************************************************************* --> - <!-- *** Build Environment ************************************** --> - <!-- ************************************************************* --> - - <!--Source control management--> - <scm> - <connection>${maven.scm.connection}</connection> - <developerConnection>${maven.scm.developerConnection}</developerConnection> - <url>${maven.scm.url}</url> - </scm> - - <!--Code Lutin Repository--> - <repositories> - <repository> - <id>codelutin-repository</id> - <name>CodeLutinRepository</name> - <url>http://lutinbuilder.labs.libre-entreprise.org/maven2</url> - <snapshots> - <enabled>true</enabled> - <checksumPolicy>warn</checksumPolicy> - </snapshots> - <releases> - <enabled>true</enabled> - <checksumPolicy>warn</checksumPolicy> - </releases> - </repository> - </repositories> - - <profiles> - <profile> - <id>release-profile</id> - <activation> - <property> - <name>performRelease</name> - <value>true</value> - </property> - </activation> - <build> - <plugins> - - <!-- always add license and third-party files to classpath --> - <plugin> - <groupId>org.codelutin</groupId> - <artifactId>maven-license-switcher-plugin</artifactId> - <version>0.6</version> - <executions> - <execution> - <id>attach-licenses</id> - <goals> - <goal>license</goal> - <goal>third-party</goal> - </goals> - </execution> - </executions> - </plugin> - - </plugins> - - </build> - </profile> - </profiles> - -</project> Copied: lutinmatrix/tags/lutinmatrix-1.3/pom.xml (from rev 137, lutinmatrix/trunk/pom.xml) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.3/pom.xml (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.3/pom.xml 2009-04-09 10:45:46 UTC (rev 138) @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + + <parent> + <groupId>org.codelutin</groupId> + <artifactId>lutinproject</artifactId> + <version>3.4</version> + </parent> + + <artifactId>lutinmatrix</artifactId> + <version>1.3</version> + + <dependencies> + + <dependency> + <groupId>org.codelutin</groupId> + <artifactId>lutinutil</artifactId> + <version>${lutinutil.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.4</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-beanutils</groupId> + <artifactId>commons-beanutils</artifactId> + <version>1.8.0</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>commons-primitives</groupId> + <artifactId>commons-primitives</artifactId> + <version>1.0</version> + <scope>compile</scope> + </dependency> + + <!--Jaxx--> + <dependency> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>jaxx-runtime-swing</artifactId> + <version>${jaxx.version}</version> + <scope>compile</scope> + </dependency> + + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>LutinMatrix</name> + <description>Librairie de matrice multi-dimensions.</description> + <inceptionYear>2004</inceptionYear> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <properties> + <!-- id du projet du labs --> + <labs.id>63</labs.id> + <labs.project>${project.artifactId}</labs.project> + + <jaxx.version>1.3</jaxx.version> + <i18n.version>0.10</i18n.version> + <lutinutil.version>1.0.4</lutinutil.version> + </properties> + + <build> + <plugins> + + <plugin> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>maven-jaxx-plugin</artifactId> + <version>${jaxx.version}</version> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + <configuration> + <extraImports> + <value>jaxx.runtime.SwingUtil</value> + <value>static jaxx.runtime.Util.getStringValue</value> + </extraImports> + <addSourcesToClassPath>true</addSourcesToClassPath> + <addProjectClassPath>true</addProjectClassPath> + </configuration> + </execution> + </executions> + </plugin> + + <!-- plugin i18n --> + <plugin> + <groupId>org.codelutin</groupId> + <artifactId>maven-i18n-plugin</artifactId> + <version>${i18n.version}</version> + <executions> + <execution> + <goals> + <goal>parserJava</goal> + <goal>gen</goal> + </goals> + </execution> + </executions> + </plugin> + + <!-- Always process jrst files, but only called on pre-site phase --> + <plugin> + <groupId>org.codelutin</groupId> + <artifactId>maven-jrst-plugin</artifactId> + <version>0.8.4</version> + <configuration> + <defaultLocale>fr</defaultLocale> + </configuration> + <executions> + <execution> + <goals> + <goal>jrst</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/deps.xml</descriptor> + <descriptor>src/main/assembly/full.xml</descriptor> + </descriptors> + </configuration> + <executions> + <execution> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>findbugs-maven-plugin</artifactId> + <version>1.2</version> + </plugin> + </plugins> + </reporting> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + + <!--Source control management--> + <scm> + <connection>scm:svn:svn://anonymous@labs.libre-entreprise.org/svnroot/lutinmatrix/lutinmatrix/tags/lutinmatrix-1.3</connection> + <developerConnection>scm:svn:svn+ssh://chatellier@labs.libre-entreprise.org/svnroot/lutinmatrix/lutinmatrix/tags/lutinmatrix-1.3</developerConnection> + <url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/lutinmatrix/tags/lutinmatrix-1.3?root=lutinmatrix</url> + </scm> + + <!--Code Lutin Repository--> + <repositories> + <repository> + <id>codelutin-repository</id> + <name>CodeLutinRepository</name> + <url>http://lutinbuilder.labs.libre-entreprise.org/maven2</url> + <snapshots> + <enabled>true</enabled> + <checksumPolicy>warn</checksumPolicy> + </snapshots> + <releases> + <enabled>true</enabled> + <checksumPolicy>warn</checksumPolicy> + </releases> + </repository> + </repositories> + + <profiles> + <profile> + <id>release-profile</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + + <!-- always add license and third-party files to classpath --> + <plugin> + <groupId>org.codelutin</groupId> + <artifactId>maven-license-switcher-plugin</artifactId> + <version>0.6</version> + <executions> + <execution> + <id>attach-licenses</id> + <goals> + <goal>license</goal> + <goal>third-party</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + + </build> + </profile> + </profiles> + +</project> Deleted: lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java =================================================================== --- lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixND.java 2009-04-06 13:49:55 UTC (rev 132) +++ lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java 2009-04-09 10:45:46 UTC (rev 138) @@ -1,668 +0,0 @@ -/* *##% lutinmatrix - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -package org.codelutin.math.matrix; - -import java.io.IOException; -import java.io.Reader; -import java.io.Serializable; -import java.io.Writer; -import java.util.List; - -/** - * MatrixND. - * - * Created: 29 oct. 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public interface MatrixND extends Serializable, Cloneable { // MatrixND - - /** - * Retourne la factory qui a permit de creer la matrice. - * - * @return la {@link MatrixFactory} - * - * @see MatrixFactory - */ - public MatrixFactory getFactory(); - - /** - * Donne toutes les semantiques de la matrice. - * - * Si la matrice n'a pas de semantique retourne null. - * - * @return la liste des semantics - */ - public List[] getSemantics(); - - /** - * Retourne la semantique pour une dimension - * - * @param dim la dimension pour lequel on veut la semantique - * @return la semantique de la dimension on null s'il n'y a pas de - * semantique - */ - public List getSemantics(int dim); - - /** - * Modifie la semantique d'une dimension - */ - public void setSemantics(int dim, List sem); - - /** - * Permet de donner un nom à la matrice. - * - * @param name name to set - */ - public void setName(String name); - - /** - * Retourne le nom de la matrice - * - * @return le nom de la matrice ou la chaine vide si pas de nom. - */ - public String getName(); - - /** - * Permet de mettre des noms aux différentes dimension. - * - * @deprecated (since 1.0.3) Use #setDimensionNames(String[]) - */ - public void setDimensionName(String[] names); - - /** - * Permet de mettre des noms aux différentes dimension. - * - * @param names names to set - * - * @since 1.0.3 - */ - public void setDimensionNames(String[] names); - - /** - * Permet de recuperer les noms des dimension. - * - * @return tableau des noms de dimension. - * - * @deprecated (since 1.0.3) Use #getDimensionNames() - */ - public String[] getDimensionName(); - - /** - * Permet de recuperer les noms des dimension. - * - * @return tableau des noms de dimension. - * - * @since 1.0.3 - */ - public String[] getDimensionNames(); - - /** - * Permet de mettre un nom à une dimension. - * - * @param dim la dimension dont on veut changer le nom - * @param name le nom à donner à la dimension - */ - public void setDimensionName(int dim, String name); - - /** - * Retourne le nom de la dimension demandé. - * - * @param dim la dimension dont on veut le nom - * @return le nom de la dimension ou la chaine vide si la dimension n'a pas - * de nom @ si la dimension demandé n'est pas valide - */ - public String getDimensionName(int dim); - - /** - * Retourne la valeur la plus courrement rencontrer dans un tableau. si - * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur - * est retourné. - * - * @return la valeur la plus nombreuse dans le tableau - */ - public double getMaxOccurence(); - - /** - * Retourne le nombre de dimensions de la matrice. - */ - public int getNbDim(); - - /** - * Retourne les dimensions de la matrice. - */ - public int[] getDim(); - - /** - * Retourne la dimension de la matrice dans la dimension d - */ - public int getDim(int d); - - /** - * Retourne un iterator sur toute la matrice - */ - public MatrixIterator iterator(); - - /** - * Applique une fonction sur chaque valeur de la matrice - */ - public MatrixND map(MapFunction f); - - // /** - // * Retourne la sous matrice demandée en fonction des dimensions - // * passé en paramètre.<br> - // * - // * Exemple: Si on a un matrice 3D.<br> - // * get([1,1,1]) retourne un element de la matrice.<br> - // * get([0,0]) retourne une matrice 1D.<br> - // * get([3]) retourne une matrice 2D.<br> - // * get([-1,1]) retourne une matrice 2D.<br> - // * get([-1,-1,1]) retourne une matrice 2D.<br> - // * - // * @param dimensions les différentes dimension à extraire. - // * - // * @return une MatrixND. - // */ - // public MatrixND get(int [] dimensions); - // public MatrixND get(int x); - // public MatrixND get(int x, int y); - // public MatrixND get(int x, int y, int z); - // public MatrixND get(int x, int y, int z, int t); - - /** - * Renvoie un element de la matrice demandée en fonction des dimensions - * passé en paramètre.<br> - * - * Exemple: Si on a un matrice 3D.<br> - * getValue(1,1,1) retourne un element de la matrice.<br> - * - * @param dimensions les différentes dimension à extraire. Le tableau doit - * contenir toutes les dimensions de la matrice, et seulement des - * nombres positif - * - * @return un entier double. - */ - public double getValue(int[] dimensions); - - public double getValue(int x); - - public double getValue(int x, int y); - - public double getValue(int x, int y, int z); - - public double getValue(int x, int y, int z, int t); - - public double getValue(Object[] coordinates); - - public double getValue(Object x); - - public double getValue(Object x, Object y); - - public double getValue(Object x, Object y, Object z); - - public double getValue(Object x, Object y, Object z, Object t); - - // /** - // * Modifie la sous matrice demandée en fonction des dimensions - // * passé en paramètre.<br> - // * - // * Exemple: Si on a un matrice 3D.<br> - // * set([1,1,1], m) modifie un element de la matrice.<br> - // * set([0,0], m) modifie une matrice 1D.<br> - // * set([3], m) modifie une matrice 2D.<br> - // * set([-1,1], m) modifie une matrice 2D.<br> - // * set([-1,-1,1], m) modifie une matrice 2D.<br> - // * - // * @param dimensions les différentes dimension à extraire. - // * - // * @param m la matrice qui doit remplacer la sous matrice spécifié - // * par l'argument dimensions - // */ - // public void set(int [] dimensions, MatrixND m); - // public void set(int x, MatrixND m); - // public void set(int x, int y, MatrixND m); - // public void set(int x, int y, int z, MatrixND m); - // public void set(int x, int y, int z, int t, MatrixND m); - - /** - * Modifie un element de la matrice en fonction des dimensions passé en - * paramètre.<br> - * - * Exemple: Si on a un matrice 3D.<br> - * set([1,1,1], m) modifie un element de la matrice.<br> - * - * @param dimensions les différentes dimension à extraire. - * - * @param d l'entier double qui doit remplacer l'entier double spécifié par - * l'argument dimensions - */ - public void setValue(int[] dimensions, double d); - - public void setValue(int x, double d); - - public void setValue(int x, int y, double d); - - public void setValue(int x, int y, int z, double d); - - public void setValue(int x, int y, int z, int t, double d); - - public void setValue(Object[] coordinates, double d); - - public void setValue(Object x, double d); - - public void setValue(Object x, Object y, double d); - - public void setValue(Object x, Object y, Object z, double d); - - public void setValue(Object x, Object y, Object z, Object t, double d); - - /** - * Copy la matrice pour pouvoir la modifier sans perdre les donnees - * initiales. - */ - public MatrixND copy(); - - /** - * Créer une nouvelle instance clonée de celle-ci - */ - public MatrixND clone(); - - // public String toString(); - - // /** - // * Verifie si les 2 matrices sont egal - // */ - // public boolean equals(Object o); - - // /** - // * Verifie si les dimensions sont valide pour cette matrice - // * @return vrai si dim a la même taille que le tableau de dimensions de la - // * matrice et si chaque valeur de dim est comprise entre 0 (inclus) et - // * la taille de la dimension (exclus). - // */ - // public boolean dimValid(int [] dim); - - /** - * Somme toutes les valeurs de la matrice - */ - public double sumAll(); - - /** - * Somme la matrice sur une dimension donnée. La matrice résultat à le même - * nombre de dimension, pas la dimension sommer, ne contient qu'une ligne. - * <p> - * par exemple pour la matrice suivante si on somme sur la dimension 1 cela - * donnera - * - * <pre> - * 1 2 3 - * 2 3 4 - * 3 4 5 - * </pre> - * - * <pre> - * 6 9 12 - * </pre> - * - * @param dim la dimension sur lequel il faut faire la somme - */ - public MatrixND sumOverDim(int dim); - - /** - * Somme la matrice mais la matrice reste de la même dimension. la somme - * permet juste de regrouper dans une dimension un certain nombre de valeur. - * <p> - * pour la matrice suivante : - * - * <pre> - * 1 2 3 4 - * 2 3 4 5 - * 3 4 5 6 - * 4 5 6 7 - * </pre> - * - * la somme sur la dimension 1 avec un pas de 2 donnera : - * - * <pre> - * 3 5 7 9 - * 7 9 11 13 - * </pre> - * - * c'est à dire que la ligne 0 et la ligne 1 sont sommées. ainsi que la - * ligne 2 avec la ligne 3. - * - * @param dim la dimension sur lequel il faut faire les sommes - * @param step le pas qu'il faut utiliser pour regrouper les elements. Si le - * pas est inférieur à 0, le pas se comporte comme si on avait - * passé en argument la taille de la dimension. Un pas de 0 ou 1, - * retourne juste une copie de la matrice actuelle. si la - * division du pas avec la taille de la dimension ne donne pas un - * nombre entier, les elements restants ne sont pas pris en - * compte. Par exemple si la dimension a 10 élements et que l'on - * donne un pas de 3, dans la matrice resultat la dimension aura - * 3 elements qui seront la somme par 3 des 9 premiers element de - * la matrice courante. Le 10eme element sera perdu. - * @return une nouvelle matrice avec le meme nombre de dimension mais dont - * la dimension passé en paramètre aura comme taille, le resultat de - * la division entier de la taille actuelle par le step - */ - public MatrixND sumOverDim(int dim, int step); - - public MatrixND sumOverDim(int dim, int start, int nb); - - /** - * Permet de supprimer des éléments de la matrice. par exemple pour la - * matrice - * - * <pre> - * 1 2 3 4 - * 2 3 4 5 - * 3 4 5 6 - * 4 5 6 7 - * </pre> - * - * un cut(1, [0,2]) donnera - * - * <pre> - * 2 4 - * 3 5 - * 4 6 - * 5 7 - * </pre> - * - * @param dim la dimension dans lequel il faut supprimer des éléments - * @param toCut les éléments à supprimer - * @return une nouvelle matrice, la matrice actuelle n'est pas modifiée - */ - public MatrixND cut(int dim, int[] toCut); - - /** - * Copie une matrice dans la matrice actuelle. La matrice à copier à le même - * nombre de dimension. Si la matrice à copier est trop grande seul les - * éléments pouvant être copier le seront. - * - * @param mat la matrice à copier - * @return return la matrice courante. - */ - public MatrixND paste(MatrixND mat); - - /** - * Copie une matrice dans la matrice actuelle. La matrice à copier à le même - * nombre de dimension. Si la matrice à copier est trop grande seul les - * éléments pouvant être copier le seront. - * - * @param origin le point à partir duquel il faut faire la copie - * @param mat la matrice à copier - * @return return la matrice courante. - */ - public MatrixND paste(int[] origin, MatrixND mat); - - /** - * Modifie la matrice actuel en metant les valeurs de mat passé en parametre - * La copie se fait en fonction de la semantique, si un element dans une - * dimension n'est pas trouvé, alors il est passé - */ - public MatrixND pasteSemantics(MatrixND mat); - - // /** - // * Permet de prendre une sous matrice dans la matrice. - // * par exemple pour la matrice suivante - // * <pre> - // * 1 2 3 4 5 - // * 2 3 4 5 6 - // * 3 4 5 6 7 - // * 4 5 6 7 8 - // * 5 6 7 8 9 - // * </pre> - // * un getSubMatrix([1,2], [-1, -1], [2,-1]) donnera - // * <pre> - // * 4 5 - // * 5 6 - // * 6 7 - // * </pre> - // * @param origine point à partir duquel on souhaite extraire la matrice - // * toutes les valeurs de ce tableau doivent être renseigné par des nombres - // * positif et inferieur au maximum de chaque dimension respective - // * @param toExtract permet d'indiquer les dimensions que l'on souhaite - // * extraire. Les dimensions que l'on souhaite sont marqué par un -1. Si - // * une dimension n'a pas de -1 alors on ne prend qu'une ligne dans cette - // * dimension. Le nombre de -1 indique la taille de la matrice resultante - // * S'il y a 3 -1 dans le tableau, la matrice aura 3 dimensions - // * @param nbToExtract permet de limite le nombre d'élément à prendre dans - // * une dimension. Si le tableau contient -1 alors toutes les valeurs de - // * origin à la fin seront prise, si le tableau contient une valeur - // positive - // * alors seul le nombre indique sera pris à partir d'origin. Une valeur - // * différente de -1 n'a de sens que pour les dimensions qui ont une valeur - // * -1 dans le paramètre toExtract - // * @return une sous matrice de la matrice - // */ - // public MatrixND getSubMatrix(int [] origin, int [] toExtract, int [] - // nbToExtract); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice si dim est - * négatif alors la dimension est prise à partir de la fin par - * exemple si l'on veut la derniere dimension il faut passer -1 - * pour dim - * @param start la position dans dim d'ou il faut partir pour prendre la - * sous matrice. - * @param nb le nombre d'élément à prendre dans la dimension. si nb est - * inférieur ou égal à 0 alors cela indique qu'il faut prendre - * tous les éléments jusqu'à la fin de la dimension. - */ - public MatrixND getSubMatrix(int dim, Object start, int nb); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param start la position dans dim d'ou il faut partir pour prendre la - * sous matrice. 0 <= start < dim.size si start est négatif alors - * la position de départ est calculé par rapport à la fin de la - * dimension, pour avoir le dernier élément il faut passer -1 - * @param nb le nombre d'élément à prendre dans la dimension si nb est - * inférieur ou égal à 0 alors cela indique qu'il faut prendre - * tous les éléments jusqu'à la fin de la dimension. - */ - public MatrixND getSubMatrix(int dim, int start, int nb); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param elem les éléments dans la dimension à conserver - */ - public MatrixND getSubMatrix(int dim, Object... elem); - - /** - * Permet de prendre une sous matrice dans la matrice courante. La sous - * matrice a le même nombre de dimensions mais sur une des dimensions on ne - * prend que certain élément. - * - * @param dim la dimension dans lequel on veut une sous matrice - * @param elem les éléments dans la dimension à conserver - */ - public MatrixND getSubMatrix(int dim, int[] elem); - - /** - * Addition la matrice courante avec la matrice passe en parametre et ce - * retourne elle meme - */ - public MatrixND add(MatrixND m); - - /** - * Soustrai la matrice courante avec la matrice passe en parametre et ce - * retourne elle meme - */ - public MatrixND minus(MatrixND m); - - /** - * retourne le transpose de la matrice - */ - public MatrixND transpose(); - - /** - * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un - * élement soit supprimée. Au pire cette méthode retourne une matrice à une - * seule dimension à un seul élément. - * - * @return une nouvelle matrice plus petite que la matrice actuelle ou egal - * s'il n'y a aucune dimension à supprimer - */ - public MatrixND reduce(); - - /** - * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un - * élement soit supprimée. Au pire cette méthode retourne une matrice à une - * seule dimension à un seul élément. - * - * @param minNbDim le nombre minimum de dimension que l'on souhaite pour la - * matrice résultat - * @return une nouvelle matrice plus petite que la matrice actuelle ou egal - * s'il n'y a aucune dimension à supprimer - */ - public MatrixND reduce(int minNbDim); - - /** - * Reduit le matrice seulement sur les dimensions passées en argument. Si - * une des dimensions passées en arguement n'a pas un seul élément, cette - * dimension n'est pas prise en compte. - * - * @param dims les dimensions sur lequel il faut faire la reduction - * @return une nouvelle matrice - */ - public MatrixND reduceDims(int... dims); - - /** - * Multiplication normal de 2 matrices 2D. Retourne une nouvelle matrice - */ - public MatrixND mult(MatrixND m); - - // /** - // * multiplication terme a terme de la matrice courante avec la - // * matrice passe en parametre et ce retourne elle meme - // */ - // public MatrixND multm(MatrixND m); - /** - * Multiplication d'une matrice par un scalaire - */ - public MatrixND mults(final double d); - - /** - * Multiplication d'une matrice par un scalaire - */ - public MatrixND divs(final double d); - - /** - * Addition d'un scalaire à une matrice - */ - public MatrixND adds(final double d); - - /** - * Soustractiond'un scalaire à une matrice - */ - public MatrixND minuss(final double d); - - /** - * Donne la matrice sous forme de List de list ... de double - * - * @return - */ - public List toList(); - - /** - * Permet de charger une matrice a partir d'une representation List - * - * @param list la matrice sous forme de List de list ... de double - */ - public void fromList(List list); - - /** - * Determine si la matrice supporte l'import et l'export CSV - * - * @return support du CSV - */ - public boolean isSupportedCSV(); - - /** - * Import depuis un reader au format CSV des données dans la matrice - * - * @param reader le reader à importer - * @param origin le point à partir duquel il faut faire l'importation - */ - public void importCSV(Reader reader, int[] origin) throws IOException; - - /** - * Export dans un writer au format CSV de la matrice - * - * @param writer le writer ou copier la matrice - * @param withSemantics export ou pas des semantiques de la matrice dans le - * writer - */ - public void exportCSV(Writer writer, boolean withSemantics) - throws IOException; - - /** - * Verifie si les matrices sont egales en ne regardant que les valeurs et - * pas les semantiques - * - * @param mat - * @return - */ - public boolean equalsValues(MatrixND mat); - - // /** - // * Multiplication d'une vecteur [i] avec une matrice [i,j], - // * le resultat est result[i,j]=matrice[i,j]*vecteur[i] - // */ - // public MatrixND multv(MatrixND v); - // /** - // * Multiplication d'une vecteur [i] avec une matrice [g,h,i,j,k,..], - // * le resultat est - // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]*vecteur[i] - // * @param v le vecteur - // * @param dim la position de la dimension avec lequel il faut multiplier - // * le vecteur. - // */ - // public MatrixND multv(MatrixND v, int dim); - // /** - // * Addition d'un vecteur [i] avec une matrice [g,h,i,j,k,..], - // * le resultat est - // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]+vecteur[i] - // * @param v le vecteur - // * @param dim la dimension ou on doit mettre le vecteur doit etre egal a - // -1 - // * [0, -1, 3 ] ajoutera le vecteur dans la dimension 2 - // */ - // public MatrixND addv(MatrixND v, int [] dim); - -} // MatrixND - Copied: lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java (from rev 133, lutinmatrix/trunk/src/main/java/org/codelutin/math/matrix/MatrixND.java) =================================================================== --- lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java (rev 0) +++ lutinmatrix/tags/lutinmatrix-1.3/src/main/java/org/codelutin/math/matrix/MatrixND.java 2009-04-09 10:45:46 UTC (rev 138) @@ -0,0 +1,668 @@ +/* *##% lutinmatrix + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package org.codelutin.math.matrix; + +import java.io.IOException; +import java.io.Reader; +import java.io.Serializable; +import java.io.Writer; +import java.util.List; + +/** + * MatrixND. + * + * Created: 29 oct. 2004 + * + * @author Benjamin Poussin <poussin@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public interface MatrixND extends Serializable, Cloneable { // MatrixND + + /** + * Retourne la factory qui a permit de creer la matrice. + * + * @return la {@link MatrixFactory} + * + * @see MatrixFactory + */ + public MatrixFactory getFactory(); + + /** + * Donne toutes les semantiques de la matrice. + * + * Si la matrice n'a pas de semantique retourne null. + * + * @return la liste des semantics + */ + public List[] getSemantics(); + + /** + * Retourne la semantique pour une dimension + * + * @param dim la dimension pour lequel on veut la semantique + * @return la semantique de la dimension on null s'il n'y a pas de + * semantique + */ + public List getSemantics(int dim); + + /** + * Modifie la semantique d'une dimension + */ + public void setSemantics(int dim, List sem); + + /** + * Permet de donner un nom à la matrice. + * + * @param name name to set + */ + public void setName(String name); + + /** + * Retourne le nom de la matrice + * + * @return le nom de la matrice ou la chaine vide si pas de nom. + */ + public String getName(); + + /** + * Permet de mettre des noms aux différentes dimension. + * + * @deprecated (since 1.0.3) Use #setDimensionNames(String[]) + */ + public void setDimensionName(String[] names); + + /** + * Permet de mettre des noms aux différentes dimension. + * + * @param names names to set + * + * @since 1.0.3 + */ + public void setDimensionNames(String[] names); + + /** + * Permet de recuperer les noms des dimension. + * + * @return tableau des noms de dimension. + * + * @deprecated (since 1.0.3) Use #getDimensionNames() + */ + public String[] getDimensionName(); + + /** + * Permet de recuperer les noms des dimension. + * + * @return tableau des noms de dimension. + * + * @since 1.0.3 + */ + public String[] getDimensionNames(); + + /** + * Permet de mettre un nom à une dimension. + * + * @param dim la dimension dont on veut changer le nom + * @param name le nom à donner à la dimension + */ + public void setDimensionName(int dim, String name); + + /** + * Retourne le nom de la dimension demandé. + * + * @param dim la dimension dont on veut le nom + * @return le nom de la dimension ou la chaine vide si la dimension n'a pas + * de nom @ si la dimension demandé n'est pas valide + */ + public String getDimensionName(int dim); + + /** + * Retourne la valeur la plus courrement rencontrer dans un tableau. si + * plusieurs valeurs ont le même nombre d'occurence la plus petite valeur + * est retourné. + * + * @return la valeur la plus nombreuse dans le tableau + */ + public double getMaxOccurence(); + + /** + * Retourne le nombre de dimensions de la matrice. + */ + public int getNbDim(); + + /** + * Retourne les dimensions de la matrice. + */ + public int[] getDim(); + + /** + * Retourne la dimension de la matrice dans la dimension d + */ + public int getDim(int d); + + /** + * Retourne un iterator sur toute la matrice + */ + public MatrixIterator iterator(); + + /** + * Applique une fonction sur chaque valeur de la matrice + */ + public MatrixND map(MapFunction f); + + // /** + // * Retourne la sous matrice demandée en fonction des dimensions + // * passé en paramètre.<br> + // * + // * Exemple: Si on a un matrice 3D.<br> + // * get([1,1,1]) retourne un element de la matrice.<br> + // * get([0,0]) retourne une matrice 1D.<br> + // * get([3]) retourne une matrice 2D.<br> + // * get([-1,1]) retourne une matrice 2D.<br> + // * get([-1,-1,1]) retourne une matrice 2D.<br> + // * + // * @param dimensions les différentes dimension à extraire. + // * + // * @return une MatrixND. + // */ + // public MatrixND get(int [] dimensions); + // public MatrixND get(int x); + // public MatrixND get(int x, int y); + // public MatrixND get(int x, int y, int z); + // public MatrixND get(int x, int y, int z, int t); + + /** + * Renvoie un element de la matrice demandée en fonction des dimensions + * passé en paramètre.<br> + * + * Exemple: Si on a un matrice 3D.<br> + * getValue(1,1,1) retourne un element de la matrice.<br> + * + * @param dimensions les différentes dimension à extraire. Le tableau doit + * contenir toutes les dimensions de la matrice, et seulement des + * nombres positif + * + * @return un entier double. + */ + public double getValue(int[] dimensions); + + public double getValue(int x); + + public double getValue(int x, int y); + + public double getValue(int x, int y, int z); + + public double getValue(int x, int y, int z, int t); + + public double getValue(Object[] coordinates); + + public double getValue(Object x); + + public double getValue(Object x, Object y); + + public double getValue(Object x, Object y, Object z); + + public double getValue(Object x, Object y, Object z, Object t); + + // /** + // * Modifie la sous matrice demandée en fonction des dimensions + // * passé en paramètre.<br> + // * + // * Exemple: Si on a un matrice 3D.<br> + // * set([1,1,1], m) modifie un element de la matrice.<br> + // * set([0,0], m) modifie une matrice 1D.<br> + // * set([3], m) modifie une matrice 2D.<br> + // * set([-1,1], m) modifie une matrice 2D.<br> + // * set([-1,-1,1], m) modifie une matrice 2D.<br> + // * + // * @param dimensions les différentes dimension à extraire. + // * + // * @param m la matrice qui doit remplacer la sous matrice spécifié + // * par l'argument dimensions + // */ + // public void set(int [] dimensions, MatrixND m); + // public void set(int x, MatrixND m); + // public void set(int x, int y, MatrixND m); + // public void set(int x, int y, int z, MatrixND m); + // public void set(int x, int y, int z, int t, MatrixND m); + + /** + * Modifie un element de la matrice en fonction des dimensions passé en + * paramètre.<br> + * + * Exemple: Si on a un matrice 3D.<br> + * set([1,1,1], m) modifie un element de la matrice.<br> + * + * @param dimensions les différentes dimension à extraire. + * + * @param d l'entier double qui doit remplacer l'entier double spécifié par + * l'argument dimensions + */ + public void setValue(int[] dimensions, double d); + + public void setValue(int x, double d); + + public void setValue(int x, int y, double d); + + public void setValue(int x, int y, int z, double d); + + public void setValue(int x, int y, int z, int t, double d); + + public void setValue(Object[] coordinates, double d); + + public void setValue(Object x, double d); + + public void setValue(Object x, Object y, double d); + + public void setValue(Object x, Object y, Object z, double d); + + public void setValue(Object x, Object y, Object z, Object t, double d); + + /** + * Copy la matrice pour pouvoir la modifier sans perdre les donnees + * initiales. + */ + public MatrixND copy(); + + /** + * Créer une nouvelle instance clonée de celle-ci + */ + public MatrixND clone(); + + // public String toString(); + + // /** + // * Verifie si les 2 matrices sont egal + // */ + // public boolean equals(Object o); + + // /** + // * Verifie si les dimensions sont valide pour cette matrice + // * @return vrai si dim a la même taille que le tableau de dimensions de la + // * matrice et si chaque valeur de dim est comprise entre 0 (inclus) et + // * la taille de la dimension (exclus). + // */ + // public boolean dimValid(int [] dim); + + /** + * Somme toutes les valeurs de la matrice + */ + public double sumAll(); + + /** + * Somme la matrice sur une dimension donnée. La matrice résultat à le même + * nombre de dimension, pas la dimension sommer, ne contient qu'une ligne. + * <p> + * par exemple pour la matrice suivante si on somme sur la dimension 1 cela + * donnera + * + * <pre> + * 1 2 3 + * 2 3 4 + * 3 4 5 + * </pre> + * + * <pre> + * 6 9 12 + * </pre> + * + * @param dim la dimension sur lequel il faut faire la somme + */ + public MatrixND sumOverDim(int dim); + + /** + * Somme la matrice mais la matrice reste de la même dimension. la somme + * permet juste de regrouper dans une dimension un certain nombre de valeur. + * <p> + * pour la matrice suivante : + * + * <pre> + * 1 2 3 4 + * 2 3 4 5 + * 3 4 5 6 + * 4 5 6 7 + * </pre> + * + * la somme sur la dimension 1 avec un pas de 2 donnera : + * + * <pre> + * 3 5 7 9 + * 7 9 11 13 + * </pre> + * + * c'est à dire que la ligne 0 et la ligne 1 sont sommées. ainsi que la + * ligne 2 avec la ligne 3. + * + * @param dim la dimension sur lequel il faut faire les sommes + * @param step le pas qu'il faut utiliser pour regrouper les elements. Si le + * pas est inférieur à 0, le pas se comporte comme si on avait + * passé en argument la taille de la dimension. Un pas de 0 ou 1, + * retourne juste une copie de la matrice actuelle. si la + * division du pas avec la taille de la dimension ne donne pas un + * nombre entier, les elements restants ne sont pas pris en + * compte. Par exemple si la dimension a 10 élements et que l'on + * donne un pas de 3, dans la matrice resultat la dimension aura + * 3 elements qui seront la somme par 3 des 9 premiers element de + * la matrice courante. Le 10eme element sera perdu. + * @return une nouvelle matrice avec le meme nombre de dimension mais dont + * la dimension passé en paramètre aura comme taille, le resultat de + * la division entier de la taille actuelle par le step + */ + public MatrixND sumOverDim(int dim, int step); + + public MatrixND sumOverDim(int dim, int start, int nb); + + /** + * Permet de supprimer des éléments de la matrice. + * Par exemple, pour la matrice + * + * <pre> + * 1 2 3 4 + * 2 3 4 5 + * 3 4 5 6 + * 4 5 6 7 + * </pre> + * + * un cut(1, [0,2]) donnera + * + * <pre> + * 2 4 + * 3 5 + * 4 6 + * 5 7 + * </pre> + * + * @param dim la dimension dans lequel il faut supprimer des éléments + * @param toCut les éléments à supprimer + * @return une nouvelle matrice, la matrice actuelle n'est pas modifiée + */ + public MatrixND cut(int dim, int[] toCut); + + /** + * Copie une matrice dans la matrice actuelle. La matrice à copier à le même + * nombre de dimension. Si la matrice à copier est trop grande seul les + * éléments pouvant être copier le seront. + * + * @param mat la matrice à copier + * @return return la matrice courante. + */ + public MatrixND paste(MatrixND mat); + + /** + * Copie une matrice dans la matrice actuelle. La matrice à copier à le même + * nombre de dimension. Si la matrice à copier est trop grande seul les + * éléments pouvant être copier le seront. + * + * @param origin le point à partir duquel il faut faire la copie + * @param mat la matrice à copier + * @return return la matrice courante. + */ + public MatrixND paste(int[] origin, MatrixND mat); + + /** + * Modifie la matrice actuel en metant les valeurs de mat passé en parametre + * La copie se fait en fonction de la semantique, si un element dans une + * dimension n'est pas trouvé, alors il est passé + */ + public MatrixND pasteSemantics(MatrixND mat); + + // /** + // * Permet de prendre une sous matrice dans la matrice. + // * par exemple pour la matrice suivante + // * <pre> + // * 1 2 3 4 5 + // * 2 3 4 5 6 + // * 3 4 5 6 7 + // * 4 5 6 7 8 + // * 5 6 7 8 9 + // * </pre> + // * un getSubMatrix([1,2], [-1, -1], [2,-1]) donnera + // * <pre> + // * 4 5 + // * 5 6 + // * 6 7 + // * </pre> + // * @param origine point à partir duquel on souhaite extraire la matrice + // * toutes les valeurs de ce tableau doivent être renseigné par des nombres + // * positif et inferieur au maximum de chaque dimension respective + // * @param toExtract permet d'indiquer les dimensions que l'on souhaite + // * extraire. Les dimensions que l'on souhaite sont marqué par un -1. Si + // * une dimension n'a pas de -1 alors on ne prend qu'une ligne dans cette + // * dimension. Le nombre de -1 indique la taille de la matrice resultante + // * S'il y a 3 -1 dans le tableau, la matrice aura 3 dimensions + // * @param nbToExtract permet de limite le nombre d'élément à prendre dans + // * une dimension. Si le tableau contient -1 alors toutes les valeurs de + // * origin à la fin seront prise, si le tableau contient une valeur + // positive + // * alors seul le nombre indique sera pris à partir d'origin. Une valeur + // * différente de -1 n'a de sens que pour les dimensions qui ont une valeur + // * -1 dans le paramètre toExtract + // * @return une sous matrice de la matrice + // */ + // public MatrixND getSubMatrix(int [] origin, int [] toExtract, int [] + // nbToExtract); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice si dim est + * négatif alors la dimension est prise à partir de la fin par + * exemple si l'on veut la derniere dimension il faut passer -1 + * pour dim + * @param start la position dans dim d'ou il faut partir pour prendre la + * sous matrice. + * @param nb le nombre d'élément à prendre dans la dimension. si nb est + * inférieur ou égal à 0 alors cela indique qu'il faut prendre + * tous les éléments jusqu'à la fin de la dimension. + */ + public MatrixND getSubMatrix(int dim, Object start, int nb); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param start la position dans dim d'ou il faut partir pour prendre la + * sous matrice. 0 <= start < dim.size si start est négatif alors + * la position de départ est calculé par rapport à la fin de la + * dimension, pour avoir le dernier élément il faut passer -1 + * @param nb le nombre d'élément à prendre dans la dimension si nb est + * inférieur ou égal à 0 alors cela indique qu'il faut prendre + * tous les éléments jusqu'à la fin de la dimension. + */ + public MatrixND getSubMatrix(int dim, int start, int nb); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param elem les éléments dans la dimension à conserver + */ + public MatrixND getSubMatrix(int dim, Object... elem); + + /** + * Permet de prendre une sous matrice dans la matrice courante. La sous + * matrice a le même nombre de dimensions mais sur une des dimensions on ne + * prend que certain élément. + * + * @param dim la dimension dans lequel on veut une sous matrice + * @param elem les éléments dans la dimension à conserver + */ + public MatrixND getSubMatrix(int dim, int[] elem); + + /** + * Addition la matrice courante avec la matrice passe en parametre et ce + * retourne elle meme + */ + public MatrixND add(MatrixND m); + + /** + * Soustrai la matrice courante avec la matrice passe en parametre et ce + * retourne elle meme + */ + public MatrixND minus(MatrixND m); + + /** + * retourne le transpose de la matrice + */ + public MatrixND transpose(); + + /** + * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un + * élement soit supprimée. Au pire cette méthode retourne une matrice à une + * seule dimension à un seul élément. + * + * @return une nouvelle matrice plus petite que la matrice actuelle ou egal + * s'il n'y a aucune dimension à supprimer + */ + public MatrixND reduce(); + + /** + * Reduit la matrice de sorte que toutes les dimensions qui n'ont qu'un + * élement soit supprimée. Au pire cette méthode retourne une matrice à une + * seule dimension à un seul élément. + * + * @param minNbDim le nombre minimum de dimension que l'on souhaite pour la + * matrice résultat + * @return une nouvelle matrice plus petite que la matrice actuelle ou egal + * s'il n'y a aucune dimension à supprimer + */ + public MatrixND reduce(int minNbDim); + + /** + * Reduit le matrice seulement sur les dimensions passées en argument. Si + * une des dimensions passées en arguement n'a pas un seul élément, cette + * dimension n'est pas prise en compte. + * + * @param dims les dimensions sur lequel il faut faire la reduction + * @return une nouvelle matrice + */ + public MatrixND reduceDims(int... dims); + + /** + * Multiplication normal de 2 matrices 2D. Retourne une nouvelle matrice + */ + public MatrixND mult(MatrixND m); + + // /** + // * multiplication terme a terme de la matrice courante avec la + // * matrice passe en parametre et ce retourne elle meme + // */ + // public MatrixND multm(MatrixND m); + /** + * Multiplication d'une matrice par un scalaire + */ + public MatrixND mults(final double d); + + /** + * Multiplication d'une matrice par un scalaire + */ + public MatrixND divs(final double d); + + /** + * Addition d'un scalaire à une matrice + */ + public MatrixND adds(final double d); + + /** + * Soustractiond'un scalaire à une matrice + */ + public MatrixND minuss(final double d); + + /** + * Donne la matrice sous forme de List de list ... de double + * + * @return + */ + public List toList(); + + /** + * Permet de charger une matrice a partir d'une representation List + * + * @param list la matrice sous forme de List de list ... de double + */ + public void fromList(List list); + + /** + * Determine si la matrice supporte l'import et l'export CSV + * + * @return support du CSV + */ + public boolean isSupportedCSV(); + + /** + * Import depuis un reader au format CSV des données dans la matrice + * + * @param reader le reader à importer + * @param origin le point à partir duquel il faut faire l'importation + */ + public void importCSV(Reader reader, int[] origin) throws IOException; + + /** + * Export dans un writer au format CSV de la matrice + * + * @param writer le writer ou copier la matrice + * @param withSemantics export ou pas des semantiques de la matrice dans le + * writer + */ + public void exportCSV(Writer writer, boolean withSemantics) + throws IOException; + + /** + * Verifie si les matrices sont egales en ne regardant que les valeurs et + * pas les semantiques + * + * @param mat + * @return + */ + public boolean equalsValues(MatrixND mat); + + // /** + // * Multiplication d'une vecteur [i] avec une matrice [i,j], + // * le resultat est result[i,j]=matrice[i,j]*vecteur[i] + // */ + // public MatrixND multv(MatrixND v); + // /** + // * Multiplication d'une vecteur [i] avec une matrice [g,h,i,j,k,..], + // * le resultat est + // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]*vecteur[i] + // * @param v le vecteur + // * @param dim la position de la dimension avec lequel il faut multiplier + // * le vecteur. + // */ + // public MatrixND multv(MatrixND v, int dim); + // /** + // * Addition d'un vecteur [i] avec une matrice [g,h,i,j,k,..], + // * le resultat est + // result[g,h,i,j,k,..]=matrice[g,h,i,j,k,l,...]+vecteur[i] + // * @param v le vecteur + // * @param dim la dimension ou on doit mettre le vecteur doit etre egal a + // -1 + // * [0, -1, 3 ] ajoutera le vecteur dans la dimension 2 + // */ + // public MatrixND addv(MatrixND v, int [] dim); + +} // MatrixND +
participants (1)
-
chatellier@users.labs.libre-entreprise.org