<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2011 - Bernard DUJARDIN
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="find">
    <refnamediv>
        <refname>find</refname>
        <refpurpose>trouve les indices des éléments vrais d'un vecteur ou d'une matrice de booléens</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Séquence d'appel</title>
        <synopsis>[ii]=find(x [,nmax])
            [i1,i2,..]=find(x [,nmax])
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Paramètres</title>
        <variablelist>
            <varlistentry>
                <term>x</term>
                <listitem>
                    <para>peut être un vecteur booléen, une matrice booléenne, une hypermatrice booléenne, une matrice ou une hypermatrice "standard".</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nmax</term>
                <listitem>
                    <para>un entier donnant le nombre maximal d'indices à retourner. La valeur par défaut est -1 qui signifie "tous". Cette option peut être utilisée dans un but d'efficacité en évitant la recherche de tous les indices.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>ii, i1, i2, ..  </term>
                <listitem>
                    <para>vecteurs d'entiers des indices ou matrices vides</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Description</title>
        <para>
            Si <literal>x</literal> est une matrice booléenne,
        </para>
        <para>
            <literal>ii=find(x)</literal> retourne le vecteur des indices <literal>i</literal> pour lesquels <literal>x(i)</literal> est "vrai". Si aucun élément vrai
            n'est trouvé find retourne une matrice vide.
        </para>
        <para>
            <literal>[i1,i2,..]=find(x)</literal> retourne le vecteur des indices <literal>i1</literal> (pour les lignes) et <literal>i2</literal> (pour les colonnes),..
            tel que <literal>x(i1(n),i2(n),..)</literal> est "vrai". Si aucun élément vrai n'est
            trouvé find retourne des matrices vides dans <literal>i1</literal>,
            <literal>i2</literal>, ...
        </para>
        <para>
            Si <literal>x</literal> est une matrice standard ou une hypermatrice <literal>find(x)</literal> est interprété comme
            <literal>find(x&lt;&gt;0).</literal>
        </para>
        <para>
            <literal>find([])</literal> retourne <literal>[].</literal>
        </para>
    </refsection>
    <refsection>
        <title>Exemples</title>
        <programlisting role="example"><![CDATA[
beers=["Desperados", "Leffe", "Kronenbourg", "Heineken"];
find(beers=="Leffe") // OK
find(beers=="1664") // KO
find(beers=="Foster") // KO
beers=[beers, "Foster"]
find(beers=="Foster") // OK

A=rand(1,20);
w=find(A<0.4)
A(w)
w=find(A>100)

B=rand(1,20);
w=find(B<0.4,2) //retourne au plus deux valeurs

H=rand(4,3,5); //une hypermatrice
[i,j,k]=find(H>0.9)

H(i(1),j(1),k(1))
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Voir aussi</title>
        <simplelist type="inline">
            <member>
                <link linkend="boolean">boolean</link>
            </member>
            <member>
                <link linkend="extraction">extraction</link>
            </member>
            <member>
                <link linkend="insertion">insertion</link>
            </member>
            <member>
                <link linkend="vectorfind">recherche de vecteur</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
