Comment tracer un graphique 3D sous MATLAB?
J'ai trois paramètres x
,y
et t
. Mais le problème, c'est mon fichier de structure.
Mes fichiers sont nommés comme suit:
e_x_y.txt
t_x_y.txt
où e_x_y.txt
a l'erreur pour des valeurs particulières de x
et y
et t_x_y.txt
a temps correspondant à des valeurs.
J'ai besoin de tracer les valeurs dans e_x_y.txt
sur un x vs y vs t
graphique.
Quelle est la meilleure façon de le faire?
Je sais ce que les valeurs x et y sont, donc je n'ai pas de déduire les noms de fichier.
Pour rendre les choses plus claires,
suppose que mes fichiers sont les suivants:
e_4_5.txt
45
54
t_4_5.txt
2.0
6.0
e_7_8.txt
32
98
121
t_7_8.txt
2
9
1.0
Je veux tracer les points suivants:
(4,5,2.0) = 45
(4,5,6.0) = 54
(7,8,2.0) = 32
(7,8,9.0) = 98
(7,8,1.0) = 121
- Quelques précisions: Que faire de ces variables représentent? Êtes-vous en mesure de la position de quelque chose (avec une erreur d'estimation) à des moments différents? Ou peut
x
,y
, ett
être représentée par une fonction de 2 variables, commey = f(x,t)
? - en fait, je suis en utilisant un algorithme à différentes configurations de mon réseau de neurones.
e
est l'erreur ett
valeurs correspondant reprises. - Sont ces points 3D densément distribués ou est-ce seulement pour quelques valeurs?
- voici quelques discontinue des points comme dans l'exemple. Juste que j'ai des centaines de paires de fichiers comme ceux-ci. Ce sont ces valeurs à partir d'un fichier existant.
Vous devez vous connecter pour publier un commentaire.
Le type de graphique que vous essayez de faire peut être difficile de visualiser le bien. Je peux vous donner deux conseils: l'un est ce que vous voulez, et l'un est ce que vous devriez probablement faire de la place...
De traçage 4-D données:
Pour ce faire, vous devrez tracer une série de
x,y,t
points et représentent en quelque sorte la valeur de l'erreure
à chaque point. Vous pouvez le faire en changeant la couleur ou la taille du point. Dans cet exemple, je vais tracer une sphère à chaque point avec un diamètre qui varie en fonction de l'erreur (d'un diamètre de 1 correspond au maximum prévu d'erreur). La couleur représente le temps. Je vais utiliser l'exemple de données que vous avez ajoutées à la question (formaté comme un 5-par 4 de la matrice dont les colonnes contenant lesx
,y
,t
, ete
de données):Et voici à quoi ça ressemblera:
Le problème: Bien que l'intrigue a l'air assez intéressant, il n'est pas très intuitive. Aussi, de tracer un bon nombre de points de cette manière, vous obtenez encombré et il sera difficile de les voir tous bien.
Plus intuitive 3-D de la parcelle:
Il peut être mieux au lieu de faire un 3-D de la parcelle de données, car il peut être plus facile à interpréter. Ici, l'axe des x représente le nombre d'itération et l'axe des y représente chaque réseau individuel:
Cela produit un son beaucoup plus clair de la parcelle:
peaks
?peaks
est intégré dans la fonction MATLAB qui est souvent utilisé comme un exemple de fonction de 2 variables dans MATLAB démos.x
ety
, comment dois-je définir leX
,Y
etZ
tableaux?X
,Y
etZ
de mes données?Même si je ne suis pas convaincu que la meilleure façon de visualiser les données, voici une façon simple de le faire comme vous l'avez demandé. Vous pouvez tracer des points 3D dans un simple nuage de points, et une carte de la taille OU de la couleur pour les valeurs de la quatrième dimension
error
. Quelque chose comme:you have two values across a time axis
e
ett
sont des valeurs mesurées pour chaque configuration du réseau(x,y)
, c'est à dire:e = f(x,y)
ett = g(x,y)
. Par conséquent, il ne fait aucun sens de l'intrigue t, par rapport à (x,y) et e. Plutôt de l'OMI, vous devriez avoir deux parcelles pour chaque fonctiont
sont les valeurs deerror
ettime
pour les différentes itérations sur le MÊME réseau. Par conséquent, il est logique de l'intrigue de cette façon. Dans l'exemple ci-dessus, le premier couple de fichiers, pournetwork 4-5
, première itération a pris2 seconds
et l'erreur a été45
tandis que la deuxième itération sur le MÊME réseau a pris6 seconds
et l'erreur a été54
.error
comme si c'était une fonction de trois variables(x,y,time)
car il ne dépend pas detime
seulement(x,y)
.time
est simplement une autre fonction de la même entrée(x,y)