[Users-fr] affichage 2D de matrice

classic Classic list List threaded Threaded
16 messages Options
Antoine Antoine
Reply | Threaded
Open this post in threaded view
|

[Users-fr] affichage 2D de matrice

Bonjour,

Je fais mes premiers pas sur Scilab et je rencontre quelques difficultés.
La documentation de bonne qualité trouvée dans le logiciel et sur le net
m'ont bien aidé jusque là. Par contre je suis maintenant bloqué sur un
point.

Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice M(i,j)
avec des matrices de position X(i,j) et Y(i,j).
Je tiens à insister sur le point que X et Y sont des matrices fonctions
de i et j. En d'autres mots, il n'y a pas deux éléments de la matrice M
qui ont le même x ou y. Il n'est donc pas possible d'utiliser de
vecteurs x et y.

Je cherche également une explication sur un calcul de scilab que je ne
comprends pas.

> -->(1)./(1:5)'   // je comprends le sens de ce calcul
>  ans  =
>
>     1.
>     0.5
>     0.3333333
>     0.25
>     0.2
>
> -->1./(1:5) //que veux dire ce résultat ?
>  ans  =
>
>     0.0181818
>     0.0363636
>     0.0545455
>     0.0727273
>     0.0909091
Je vous remercie de votre aide et de vos commentaires.
Antoine
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Calixte DENIZET Calixte DENIZET
Reply | Threaded
Open this post in threaded view
|

Re: affichage 2D de matrice

On 06/03/2014 15:39, Antoine wrote:
> Bonjour,
>

Bonjour Antoine,

> Je fais mes premiers pas sur Scilab et je rencontre quelques difficultés.
> La documentation de bonne qualité trouvée dans le logiciel et sur le
> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
> sur un point.

merci

>
>
> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
> Je tiens à insister sur le point que X et Y sont des matrices
> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
> la matrice M qui ont le même x ou y. Il n'est donc pas possible
> d'utiliser de vecteurs x et y.
>

Matplot1 peut etre: http://help.scilab.org/docs/5.4.1/en_US/Matplot1.html

> Je cherche également une explication sur un calcul de scilab que je ne
> comprends pas.
>
>> -->(1)./(1:5)'   // je comprends le sens de ce calcul
>>  ans  =
>>
>>     1.
>>     0.5
>>     0.3333333
>>     0.25
>>     0.2
>>
>> -->1./(1:5) //que veux dire ce résultat ?
>>  ans  =
>>
>>     0.0181818
>>     0.0363636
>>     0.0545455
>>     0.0727273
>>     0.0909091

en fait ici le parseur lit 1. comme (1.) donc se n'est pas l'operator
element-wise-slash (./) qui est applique mais slash (/):
http://help.scilab.org/docs/5.4.1/en_US/slash.html

Cordialement,

Calixte

> Je vous remercie de votre aide et de vos commentaires.
> Antoine
> _______________________________________________
> users-fr mailing list
> [hidden email]
> http://lists.scilab.org/mailman/listinfo/users-fr


--
Calixte Denizet
Software Development Engineer
-----------------------------------------------------------
Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
http://www.scilab-enterprises.com

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

Re: affichage 2D de matrice

Bonjour,

Merci pour vos renseignements, malheureusement Matplot1 ne semble pas
correspondre à mon besoin.
J'ai refait le tour de la documentation mais je ne trouve pas ce qu'il
me faut comme fonction.
Pour l'instant, j'exporte mes données pour les afficher avec un autre
logiciel.

J'ai tenté une autre approche qui consiste à faire une interpolation de
ma matrice sur un autre maillage pour réussir l'affichage.
Je me suis inspiré de l'exemple de la fonction interp2d mais là encore
il faut une fonction spline2d utilisable uniquement avec des vecteurs x
et y et refuse donc mes matrices X(i,j) et Y(i,j).

Antoine


Le 06/03/2014 15:55, Calixte Denizet a écrit :

> On 06/03/2014 15:39, Antoine wrote:
>> Bonjour,
>>
>
> Bonjour Antoine,
>
>> Je fais mes premiers pas sur Scilab et je rencontre quelques
>> difficultés.
>> La documentation de bonne qualité trouvée dans le logiciel et sur le
>> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
>> sur un point.
>
> merci
>
>>
>>
>> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
>> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
>> Je tiens à insister sur le point que X et Y sont des matrices
>> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
>> la matrice M qui ont le même x ou y. Il n'est donc pas possible
>> d'utiliser de vecteurs x et y.
>>
>
> Matplot1 peut etre: http://help.scilab.org/docs/5.4.1/en_US/Matplot1.html
>
>> Je cherche également une explication sur un calcul de scilab que je
>> ne comprends pas.
>>
>>> -->(1)./(1:5)'   // je comprends le sens de ce calcul
>>>  ans  =
>>>
>>>     1.
>>>     0.5
>>>     0.3333333
>>>     0.25
>>>     0.2
>>>
>>> -->1./(1:5) //que veux dire ce résultat ?
>>>  ans  =
>>>
>>>     0.0181818
>>>     0.0363636
>>>     0.0545455
>>>     0.0727273
>>>     0.0909091
>
> en fait ici le parseur lit 1. comme (1.) donc se n'est pas l'operator
> element-wise-slash (./) qui est applique mais slash (/):
> http://help.scilab.org/docs/5.4.1/en_US/slash.html
>
> Cordialement,
>
> Calixte
>
>> Je vous remercie de votre aide et de vos commentaires.
>> Antoine
>> _______________________________________________
>> users-fr mailing list
>> [hidden email]
>> http://lists.scilab.org/mailman/listinfo/users-fr
>
>

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

Re: affichage 2D de matrice

In reply to this post by Antoine
Bonjour,

Le 06/03/2014 15:39, Antoine a écrit :

> Bonjour,
>
> Je fais mes premiers pas sur Scilab et je rencontre quelques difficultés.
> La documentation de bonne qualité trouvée dans le logiciel et sur le
> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
> sur un point.
>
> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
> Je tiens à insister sur le point que X et Y sont des matrices
> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
> la matrice M qui ont le même x ou y. Il n'est donc pas possible
> d'utiliser de vecteurs x et y.
Je crains ne pas comprendre votre demande.
Où l'élément M(i,j) doit-il être affiché, et sous quelle forme et selon
quelle dépendance à sa valeur ?
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
jbaudais jbaudais
Reply | Threaded
Open this post in threaded view
|

Re: affichage 2D de matrice

Bonjour,
Le 07/03/2014 15:27, Samuel Gougeon a écrit :

>> Je fais mes premiers pas sur Scilab et je rencontre quelques difficultés.
>> La documentation de bonne qualité trouvée dans le logiciel et sur le
>> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
>> sur un point.
>>
>> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
>> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
>> Je tiens à insister sur le point que X et Y sont des matrices
>> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
>> la matrice M qui ont le même x ou y. Il n'est donc pas possible
>> d'utiliser de vecteurs x et y.
> Je crains ne pas comprendre votre demande.
> Où l'élément M(i,j) doit-il être affiché, et sous quelle forme et selon
> quelle dépendance à sa valeur ?

Qu'entendez-vous par matrice de position. Quelles sont les différences
entre les éléments d'une matrice M(i,j) qui sont affichés simplement par
--> M
et les éléments des "matrices de position" X ou Y ? M est-il une matrice
mais pas une "matrice de position" ?

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

Re: affichage 2D de matrice

In reply to this post by Samuel GOUGEON
Bonjour,

Je cherche à afficher une matrice sous la forme d'une surface (couleur).
Le problème est au niveau des abscisses et coordonnées associées à
chaque élément de la matrice.
Par exemple, il existe la fonction grayplot(x,y,M) mais celle-ci
fonctionne uniquement avec des vecteurs x(i) et y(j) que l'on associe à
la matrice M(i,j).
Il y a donc un unique x associé à chaque colonne de M, et un unique y
associé à chaque ligne de la matrice.

Dans mon cas, j'ai en réalité des positions qui sont de la forme X(i,j)
et Y(i,j) issues de données expérimentales.
Chaque élément de la matrice a une position x,y qui lui est propre.

Voici un exemple pour illustrer mes propos :

> -->X(1:5,1:5)
>  ans  =
>
>   - 38.873948  - 38.779007  - 38.684192  - 38.589505  - 38.494945
>   - 37.85452   - 37.760255  - 37.666116  - 37.572103  - 37.478216
>   - 36.834933  - 36.741344  - 36.64788   - 36.554542  - 36.461328
>   - 35.815186  - 35.722273  - 35.629485  - 35.536821  - 35.444282
>   - 34.795279  - 34.703043  - 34.610931  - 34.518942  - 34.427076
>
> -->Y(1:5,1:5)
>  ans  =
>
>   - 38.348145  - 37.045021  - 35.743643  - 34.444008  - 33.146112
>   - 38.351151  - 37.047922  - 35.746441  - 34.446702  - 33.148702
>   - 38.354156  - 37.050824  - 35.749239  - 34.449396  - 33.151293
>   - 38.357163  - 37.053726  - 35.752037  - 34.452091  - 33.153885
>   - 38.360169  - 37.056629  - 35.754836  - 34.454786  - 33.156477
> -->data(1:5,1:5)
>  ans  =
>
>     361.36567    363.89887    362.30396    361.63436 363.50173
>     355.32577    352.35042    355.32577    355.18551 354.76388
>     346.1994     346.34917    347.83765    345.59862 347.54128
>     346.79746    346.1994     346.94656    344.84378 349.01665
>     344.9951     346.04946    344.84378    346.1994 348.28099
en x=- 38.873948 mm, y=- 38.348145 j'ai la valeur data=361.36567 et
ainsi de suite...

je cherche donc une sorte de mesh(X,Y,M) qui sorte un résultat "de type
surface" avec une échelle en colorbar.
J'insiste sur l'aspect surface, la vision 3D de ces résultats ne me
permettent pas de vraiment conclure sur mes expérimentations. C'est
l'information géométrique/2D que je souhaite vérifier, il faut que les
échelles sur x et y soient les mêmes (pas de déformation de l'image).

Je vous remercie pour votre aide.
Antoine


Le 07/03/2014 15:27, Samuel Gougeon a écrit :

> Bonjour,
>
> Le 06/03/2014 15:39, Antoine a écrit :
>> Bonjour,
>>
>> Je fais mes premiers pas sur Scilab et je rencontre quelques
>> difficultés.
>> La documentation de bonne qualité trouvée dans le logiciel et sur le
>> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
>> sur un point.
>>
>> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
>> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
>> Je tiens à insister sur le point que X et Y sont des matrices
>> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
>> la matrice M qui ont le même x ou y. Il n'est donc pas possible
>> d'utiliser de vecteurs x et y.
> Je crains ne pas comprendre votre demande.
> Où l'élément M(i,j) doit-il être affiché, et sous quelle forme et
> selon quelle dépendance à sa valeur ?
> _______________________________________________
> users-fr mailing list
> [hidden email]
> http://lists.scilab.org/mailman/listinfo/users-fr

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

Re: affichage 2D de matrice

Le 07/03/2014 16:16, Antoine a écrit :

> Voici un exemple pour illustrer mes propos :
>
>> -->X(1:5,1:5)
>>  ans  =
>>
>>   - 38.873948  - 38.779007  - 38.684192  - 38.589505  - 38.494945
>>   - 37.85452   - 37.760255  - 37.666116  - 37.572103  - 37.478216
>>   - 36.834933  - 36.741344  - 36.64788   - 36.554542  - 36.461328
>>   - 35.815186  - 35.722273  - 35.629485  - 35.536821  - 35.444282
>>   - 34.795279  - 34.703043  - 34.610931  - 34.518942  - 34.427076
>>
>> -->Y(1:5,1:5)
>>  ans  =
>>
>>   - 38.348145  - 37.045021  - 35.743643  - 34.444008  - 33.146112
>>   - 38.351151  - 37.047922  - 35.746441  - 34.446702  - 33.148702
>>   - 38.354156  - 37.050824  - 35.749239  - 34.449396  - 33.151293
>>   - 38.357163  - 37.053726  - 35.752037  - 34.452091  - 33.153885
>>   - 38.360169  - 37.056629  - 35.754836  - 34.454786  - 33.156477
>> -->data(1:5,1:5)
>>  ans  =
>>
>>     361.36567    363.89887    362.30396    361.63436 363.50173
>>     355.32577    352.35042    355.32577    355.18551 354.76388
>>     346.1994     346.34917    347.83765    345.59862 347.54128
>>     346.79746    346.1994     346.94656    344.84378 349.01665
>>     344.9951     346.04946    344.84378    346.1994 348.28099
> en x=- 38.873948 mm, y=- 38.348145 j'ai la valeur data=361.36567 et
> ainsi de suite...

Ouais, c'est du paramétrique ça. Un "help Graphics" avec un g majuscule
vous donne une vision graphique de ce qu'il est possible de faire mais
j'ai peur que Scilab ne sache pas faire tout seul. Comment interpoler et
entre quoi et quoi ? Pour que Scilab affiche une surface il faudra
probablement re-échantillonner et définir des vecteurs x et y uniques.
C'est une piste, à moins que des contributeurs aient déjà proposés des
choses (mais je n'ai pas l'impression que le module extern
http://atoms.scilab.org/categories/graphics face quelque chose...)

Jean-Yves
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Serge Steer-2 Serge Steer-2
Reply | Threaded
Open this post in threaded view
|

Re: affichage 2D de matrice

In reply to this post by Antoine
Bonjour,
je pense que vous pouvez utiliser les fonctions d'interpolations cshep2d
et  eval_cshep2d  en convertissant au préalable vos matrices X Y et Z en
vecteur
Serge Steer

Le 07/03/2014 14:48, Antoine a écrit :

> Bonjour,
>
> Merci pour vos renseignements, malheureusement Matplot1 ne semble pas
> correspondre à mon besoin.
> J'ai refait le tour de la documentation mais je ne trouve pas ce qu'il
> me faut comme fonction.
> Pour l'instant, j'exporte mes données pour les afficher avec un autre
> logiciel.
>
> J'ai tenté une autre approche qui consiste à faire une interpolation
> de ma matrice sur un autre maillage pour réussir l'affichage.
> Je me suis inspiré de l'exemple de la fonction interp2d mais là encore
> il faut une fonction spline2d utilisable uniquement avec des vecteurs
> x et y et refuse donc mes matrices X(i,j) et Y(i,j).
>
> Antoine
>
>
> Le 06/03/2014 15:55, Calixte Denizet a écrit :
>> On 06/03/2014 15:39, Antoine wrote:
>>> Bonjour,
>>>
>>
>> Bonjour Antoine,
>>
>>> Je fais mes premiers pas sur Scilab et je rencontre quelques
>>> difficultés.
>>> La documentation de bonne qualité trouvée dans le logiciel et sur le
>>> net m'ont bien aidé jusque là. Par contre je suis maintenant bloqué
>>> sur un point.
>>
>> merci
>>
>>>
>>>
>>> Je ne trouve pas de fonction 2D qui puisse m'afficher une matrice
>>> M(i,j) avec des matrices de position X(i,j) et Y(i,j).
>>> Je tiens à insister sur le point que X et Y sont des matrices
>>> fonctions de i et j. En d'autres mots, il n'y a pas deux éléments de
>>> la matrice M qui ont le même x ou y. Il n'est donc pas possible
>>> d'utiliser de vecteurs x et y.
>>>
>>
>> Matplot1 peut etre:
>> http://help.scilab.org/docs/5.4.1/en_US/Matplot1.html
>>
>>> Je cherche également une explication sur un calcul de scilab que je
>>> ne comprends pas.
>>>
>>>> -->(1)./(1:5)'   // je comprends le sens de ce calcul
>>>>  ans  =
>>>>
>>>>     1.
>>>>     0.5
>>>>     0.3333333
>>>>     0.25
>>>>     0.2
>>>>
>>>> -->1./(1:5) //que veux dire ce résultat ?
>>>>  ans  =
>>>>
>>>>     0.0181818
>>>>     0.0363636
>>>>     0.0545455
>>>>     0.0727273
>>>>     0.0909091
>>
>> en fait ici le parseur lit 1. comme (1.) donc se n'est pas l'operator
>> element-wise-slash (./) qui est applique mais slash (/):
>> http://help.scilab.org/docs/5.4.1/en_US/slash.html
>>
>> Cordialement,
>>
>> Calixte
>>
>>> Je vous remercie de votre aide et de vos commentaires.
>>> Antoine
>>> _______________________________________________
>>> users-fr mailing list
>>> [hidden email]
>>> http://lists.scilab.org/mailman/listinfo/users-fr
>>
>>
>
> _______________________________________________
> users-fr mailing list
> [hidden email]
> http://lists.scilab.org/mailman/listinfo/users-fr
>

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

Re: affichage 2D de matrice

In reply to this post by Antoine
> -->X(1:5,1:5)
>  ans  =
>
>   - 38.873948  - 38.779007  - 38.684192  - 38.589505  - 38.494945
>   - 37.85452   - 37.760255  - 37.666116  - 37.572103  - 37.478216
>   - 36.834933  - 36.741344  - 36.64788   - 36.554542  - 36.461328
>   - 35.815186  - 35.722273  - 35.629485  - 35.536821  - 35.444282
>   - 34.795279  - 34.703043  - 34.610931  - 34.518942  - 34.427076
>
> -->Y(1:5,1:5)
>  ans  =
>
>   - 38.348145  - 37.045021  - 35.743643  - 34.444008  - 33.146112
>   - 38.351151  - 37.047922  - 35.746441  - 34.446702  - 33.148702
>   - 38.354156  - 37.050824  - 35.749239  - 34.449396  - 33.151293
>   - 38.357163  - 37.053726  - 35.752037  - 34.452091  - 33.153885
>   - 38.360169  - 37.056629  - 35.754836  - 34.454786  - 33.156477
> -->data(1:5,1:5)
>  ans  =
>
>     361.36567    363.89887    362.30396    361.63436 363.50173
>     355.32577    352.35042    355.32577    355.18551 354.76388
>     346.1994     346.34917    347.83765    345.59862 347.54128
>     346.79746    346.1994     346.94656    344.84378 349.01665
>     344.9951     346.04946    344.84378    346.1994 348.28099

Aa! donc vos x et y sont quand même bien rangés ! Ce qui permet d'utiliser:

X = [
   -38.873948  -38.779007  -38.684192  -38.589505  -38.494945
   -37.85452   -37.760255  -37.666116  -37.572103  -37.478216
   -36.834933  -36.741344  -36.64788   -36.554542  -36.461328
   -35.815186  -35.722273  -35.629485  -35.536821  -35.444282
   -34.795279  -34.703043  -34.610931  -34.518942  -34.427076
   ];
Y = [
   -38.348145  -37.045021  -35.743643  -34.444008  -33.146112
   -38.351151  -37.047922  -35.746441  -34.446702  -33.148702
   -38.354156  -37.050824  -35.749239  -34.449396  -33.151293
   -38.357163  -37.053726  -35.752037  -34.452091  -33.153885
   -38.360169  -37.056629  -35.754836  -34.454786  -33.156477
   ];
M = [
     361.36567    363.89887    362.30396    361.63436 363.50173
     355.32577    352.35042    355.32577    355.18551 354.76388
     346.1994     346.34917    347.83765    345.59862 347.54128
     346.79746    346.1994     346.94656    344.84378 349.01665
     344.9951     346.04946    344.84378    346.1994 348.28099
    ];

surf(X,Y,M);
ax = gca();
ax.view = "2d";
// pour modifier la colormap, je vous laisse faire.

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

Re: affichage 2D de matrice

surf(X,Y,M);
ax = gca();
ax.view = "2d";

// > il faut que les échelles sur x et y soient les mêmes (pas de déformation de l'image).
// Pour ça, ajouter :
ax.isoview = "on";
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Leblanc Alain Leblanc Alain
Reply | Threaded
Open this post in threaded view
|

Re: affichage 2D de matrice

In reply to this post by Samuel GOUGEON
Bonjour
Pouvez vous me désinscrire de cette liste
Merci
A Leblanc
----- Original Message -----
From: <[hidden email]>
To: "French users mailing list for Scilab." <[hidden email]>
Sent: Friday, March 07, 2014 10:45 PM
Subject: Re: [Users-fr] affichage 2D de matrice


> -->X(1:5,1:5)
>  ans  =
>
>   - 38.873948  - 38.779007  - 38.684192  - 38.589505  - 38.494945
>   - 37.85452   - 37.760255  - 37.666116  - 37.572103  - 37.478216
>   - 36.834933  - 36.741344  - 36.64788   - 36.554542  - 36.461328
>   - 35.815186  - 35.722273  - 35.629485  - 35.536821  - 35.444282
>   - 34.795279  - 34.703043  - 34.610931  - 34.518942  - 34.427076
>
> -->Y(1:5,1:5)
>  ans  =
>
>   - 38.348145  - 37.045021  - 35.743643  - 34.444008  - 33.146112
>   - 38.351151  - 37.047922  - 35.746441  - 34.446702  - 33.148702
>   - 38.354156  - 37.050824  - 35.749239  - 34.449396  - 33.151293
>   - 38.357163  - 37.053726  - 35.752037  - 34.452091  - 33.153885
>   - 38.360169  - 37.056629  - 35.754836  - 34.454786  - 33.156477
> -->data(1:5,1:5)
>  ans  =
>
>     361.36567    363.89887    362.30396    361.63436 363.50173
>     355.32577    352.35042    355.32577    355.18551 354.76388
>     346.1994     346.34917    347.83765    345.59862 347.54128
>     346.79746    346.1994     346.94656    344.84378 349.01665
>     344.9951     346.04946    344.84378    346.1994 348.28099

Aa! donc vos x et y sont quand même bien rangés ! Ce qui permet d'utiliser:

X = [
   -38.873948  -38.779007  -38.684192  -38.589505  -38.494945
   -37.85452   -37.760255  -37.666116  -37.572103  -37.478216
   -36.834933  -36.741344  -36.64788   -36.554542  -36.461328
   -35.815186  -35.722273  -35.629485  -35.536821  -35.444282
   -34.795279  -34.703043  -34.610931  -34.518942  -34.427076
   ];
Y = [
   -38.348145  -37.045021  -35.743643  -34.444008  -33.146112
   -38.351151  -37.047922  -35.746441  -34.446702  -33.148702
   -38.354156  -37.050824  -35.749239  -34.449396  -33.151293
   -38.357163  -37.053726  -35.752037  -34.452091  -33.153885
   -38.360169  -37.056629  -35.754836  -34.454786  -33.156477
   ];
M = [
     361.36567    363.89887    362.30396    361.63436 363.50173
     355.32577    352.35042    355.32577    355.18551 354.76388
     346.1994     346.34917    347.83765    345.59862 347.54128
     346.79746    346.1994     346.94656    344.84378 349.01665
     344.9951     346.04946    344.84378    346.1994 348.28099
    ];

surf(X,Y,M);
ax = gca();
ax.view = "2d";
// pour modifier la colormap, je vous laisse faire.

Samuel
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


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

Re: affichage 2D de matrice

In reply to this post by Samuel GOUGEON
Bonjour à tous et merci pour votre aide,

les dernières réponses m'ont aider à résoudre mon problème.

je fais un retour des solutions pour ceux que ça intéresse

concernant l'affichage de la matrice sous forme de surface, j'ai utilisé le programme suivant

f=scf();
f.color_map = jetcolormap(256);
surf(matX,matY,data');
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d')
ax = gca();
ax.view = "2d";
ax.isoview = "on";
// objet correspondant `a la surface
s=ax.children;
// aretes non visibles
s.color_mode=-1;
// interpolation des couleurs pour chaque face
s.color_flag=3;

concernant l'interpolation sur une grille plus régulière, j'ai suivi la démarche suivante,

tout d'abord, interpolation sur la grille
// interpolation sur grille réguliere
M=data';
xyz=[matX(:) matY(:) M(:)];
tl_coef = cshep2d(xyz);
i=min(matX):(max(matX)-min(matX))/320:max(matX);
j=min(matY):(max(matY)-min(matY))/240:max(matY);
[I,J]=meshgrid(i,j);
Data = eval_cshep2d(I,J, tl_coef);
puis affichage


// puis affichage
f=scf();
f.color_map = jetcolormap(256);
surf(I,J,Data);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d')
ax = gca();
ax.view = "2d";
ax.isoview = "on";
// objet correspondant `a la surface
s=ax.children;
// aretes non visibles
s.color_mode=-1;
// interpolation des couleurs pour chaque face
s.color_flag=3;

j'ai un petit soucis ici au niveau de la colorbar, j’aimerai que les couleurs soient les mêmes sur mes deux figures
cependant l'interpolation engendre des erreurs sur les bords de la matrice, qui fausse mon échelle dans la seconde figure

Antoine

Le 07/03/2014 22:56, [hidden email] a écrit :
surf(X,Y,M);
ax = gca();
ax.view = "2d";

// > il faut que les échelles sur x et y soient les mêmes (pas de déformation de l'image).
// Pour ça, ajouter :
ax.isoview = "on";
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


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

Re: affichage 2D de matrice

Bonjour,

Le 10/03/2014 09:58, Antoine a écrit :
.../...
j'ai un petit soucis ici au niveau de la colorbar, j’aimerai que les couleurs soient les mêmes sur mes deux figures
cependant l'interpolation engendre des erreurs sur les bords de la matrice, qui fausse mon échelle dans la seconde figure

Vous pouvez soit dessiner chaque surface dans une fenêtre distincte (chacune ayant sa propre table de couleurs),
soit utiliser le mode s.cdata_mapping = "direct"; lorsque plusieurs surfaces (et graphes) doivent partager
la même table de couleurs sans tous en couvrir toute l'étendue.

Samuel


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

Re: affichage 2D de matrice

Bonjour,

Je vais essayer d'être plus précis.
Je souhaite afficher les deux surfaces dans deux fenêtres différentes (fenêtre 1 et 2).
Par contre je cherche à imposer une table de couleur dans la fenêtre 2 qui est la même que celle de la fenêtre 1.

Pour l'instant, j'arrive à imposer la même table de couleur dans la fenêtre 1 et 2, le problème est que la surface de la fenêtre 2 ne respecte pas l'échelle imposée.

//fenetre 1
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d')
surf(matX,matY,data');
//fenetre 2
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d') // choisi identique a fenêtre 1
surf(I,J,Data); //Data est une interpolation de data
Merci

Antoine


Le 10/03/2014 10:13, Samuel Gougeon a écrit :
Bonjour,

Le 10/03/2014 09:58, Antoine a écrit :
.../...
j'ai un petit soucis ici au niveau de la colorbar, j’aimerai que les couleurs soient les mêmes sur mes deux figures
cependant l'interpolation engendre des erreurs sur les bords de la matrice, qui fausse mon échelle dans la seconde figure

Vous pouvez soit dessiner chaque surface dans une fenêtre distincte (chacune ayant sa propre table de couleurs),
soit utiliser le mode s.cdata_mapping = "direct"; lorsque plusieurs surfaces (et graphes) doivent partager
la même table de couleurs sans tous en couvrir toute l'étendue.

Samuel



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


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

Re: affichage 2D de matrice

Le 10/03/2014 11:16, Antoine a écrit :
Bonjour,

Je vais essayer d'être plus précis.
Je souhaite afficher les deux surfaces dans deux fenêtres différentes (fenêtre 1 et 2).
Par contre je cherche à imposer une table de couleur dans la fenêtre 2 qui est la même que celle de la fenêtre 1.

Pour l'instant, j'arrive à imposer la même table de couleur dans la fenêtre 1 et 2, le problème est que la surface de la fenêtre 2 ne respecte pas l'échelle imposée.

//fenetre 1
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d')
surf(matX,matY,data');
//fenetre 2
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d') // choisi identique a fenêtre 1
surf(I,J,Data); //Data est une interpolation de data
Merci

Antoine


Le 10/03/2014 10:13, Samuel Gougeon a écrit :
Bonjour,

Le 10/03/2014 09:58, Antoine a écrit :
.../...
j'ai un petit soucis ici au niveau de la colorbar, j’aimerai que les couleurs soient les mêmes sur mes deux figures
cependant l'interpolation engendre des erreurs sur les bords de la matrice, qui fausse mon échelle dans la seconde figure

Vous pouvez soit dessiner chaque surface dans une fenêtre distincte (chacune ayant sa propre table de couleurs),
soit utiliser le mode s.cdata_mapping = "direct"; lorsque plusieurs surfaces (et graphes) doivent partager
la même table de couleurs sans tous en couvrir toute l'étendue.
Oui, dans ce cas également vous devez utiliser le mode cdata_mapping = "direct"; après avoir converti
vos données en Z en n° de couleurs.
La possibilité de mettre en oeuvre plus facilement une correspondance Z=> n° de couleurs en mode
"scaled" -- mais sur une étendue de la table au choix [(zmin, c_min), (zmax, cmax)], sans avoir à dénaturer
les données -- a été demandée, avec la proposition concrète ci-dessus, mais a récemment été classée sans suite :
http://bugzilla.scilab.org/show_bug.cgi?id=11059

Samuel



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

Re: affichage 2D de matrice

Le 10/03/2014 14:45, Samuel Gougeon a écrit :
Le 10/03/2014 11:16, Antoine a écrit :
Bonjour,

Je vais essayer d'être plus précis.
Je souhaite afficher les deux surfaces dans deux fenêtres différentes (fenêtre 1 et 2).
Par contre je cherche à imposer une table de couleur dans la fenêtre 2 qui est la même que celle de la fenêtre 1.

Pour l'instant, j'arrive à imposer la même table de couleur dans la fenêtre 1 et 2, le problème est que la surface de la fenêtre 2 ne respecte pas l'échelle imposée.

//fenetre 1
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d')
surf(matX,matY,data');
//fenetre 2
f=scf();
f.color_map = jetcolormap(256);
colorbar(min(data),max(data),[1,round(max(data)-min(data))],fmt='%d') // choisi identique a fenêtre 1
surf(I,J,Data); //Data est une interpolation de data
Merci

Antoine


Le 10/03/2014 10:13, Samuel Gougeon a écrit :
Bonjour,

Le 10/03/2014 09:58, Antoine a écrit :
.../...
j'ai un petit soucis ici au niveau de la colorbar, j’aimerai que les couleurs soient les mêmes sur mes deux figures
cependant l'interpolation engendre des erreurs sur les bords de la matrice, qui fausse mon échelle dans la seconde figure

Vous pouvez soit dessiner chaque surface dans une fenêtre distincte (chacune ayant sa propre table de couleurs),
soit utiliser le mode s.cdata_mapping = "direct"; lorsque plusieurs surfaces (et graphes) doivent partager
la même table de couleurs sans tous en couvrir toute l'étendue.
Oui, dans ce cas également vous devez utiliser le mode cdata_mapping = "direct"; après avoir converti
vos données en Z en n° de couleurs.
La possibilité de mettre en oeuvre plus facilement une correspondance Z=> n° de couleurs en mode
"scaled" -- mais sur une étendue de la table au choix [(zmin, c_min), (zmax, cmax)], sans avoir à dénaturer
les données -- a été demandée, avec la proposition concrète ci-dessus, mais a récemment été classée sans suite :
http://bugzilla.scilab.org/show_bug.cgi?id=11059

Samuel



Bonjour,

Avec le module atoms "plotlib", il est possible de résoudre le problème évoqué en utilisant la macro "caxis" (même comportement que sous Matlab). par exemple :

x=1:2;
y=1:2;
z=[1 2;3 4]
C=splin2d(x,y,z);
[xp,yp]=meshgrid(1:0.05:1.5,1:0.05:1.5);
zp=interp2d(xp,yp,x,y,C);
figure(0);
surf(x,y,z');
shading interp
colorbar top
ca=caxis();

figure(1);
surf(xp,yp,zp);
colorbar top
caxis(ca);
S.



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr