[Users-fr] Mise en forme Matrice

classic Classic list List threaded Threaded
2 messages Options
GOBILLOT Gilles 116128 GOBILLOT Gilles 116128
Reply | Threaded
Open this post in threaded view
|

[Users-fr] Mise en forme Matrice

Bonjour,

J'ai des valeurs dans un tableau "csv" :
X;Y;Z;Val1;Val2

Je souhaite afficher Val1 sous forme d'image de coordonnées X et Y

Pour çà j'utilise grayplot(Xu,Yu,MatriceVal1) où
Xu sont les valeurs uniques de X, Yu celles de Y et MatriceVal1 une matrice rectangulaire contenant les valeurs VAL1 positionnées aux coordonnées X et Y correspondantes

Tout çà fonctionne correctement, sauf que la création de ma matrice est longue (70000 mesures) :

    z=zeros(length(x),length(y));
    for idx=1:length(x)
        for idy=1:length(y)
            idtmp=find(MatriceVal1 (:,1)==x(idx) & MatriceVal1 (:,2)==y(idy));
            if isempty(idtmp) then
                //z(idx,idy)=0;
            else
                z(idx,idy)= MatriceVal1 (idtmp(1),4);
            end
        end
    end

savez-vous comment optimiser çà en terme de temps ?

merci pour votre aide

Gilles GOBILLOT
Laboratoire d'Instrumentation et Essais Technologiques
Tel : +33 (0)4 42 25 20 33 -  Mob : +33 (0) 6 87 99 19 57
[hidden email]


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
David Chèze David Chèze
Reply | Threaded
Open this post in threaded view
|

Re: [Users-fr] Mise en forme Matrice

Bonjour Gilles,

pour mettre en forme une matrice, il existe la commande matrix (cf aide).
Typiquement il faut passer ici d'une description en vecteur à une description en matrice 2x2 : si les valeurs xy val de la description initiale (disons la matrice datainit suite à l'import csvRead()) sont rangées de façon tri croissant selon x puis y par exemple, alors il doit être possible d'écrire directement:
matrix(datainit(:,4),length(x),length(y))

David