Matlab: lien vers la variable, pas la valeur de la variable
Il a été très difficile à utiliser google, MATLAB de la documentation, j'ai passé quelques heures, et je ne peut pas apprendre à
x = 1
y = x
x = 10
y
ans = 10
ce qui se passe au lieu de cela est:
x = 1
y = x
x = 10
y
ans = 1
La valeur de x est stocké dans y. Mais je veux mettre à jour dynamiquement la valeur de y à l'égalité de x.
Quelle opération dois-je utiliser pour ce faire?
Grâce.M
- Vous voulez regarder pour les pointeurs dans MATLAB. Ma recherche rapide n'a pas rien, mais qui pourrait vous aider à w/ Googler.
- Je suis curieux de penser que vous vous approchez le problème dans le mauvais sens si vous besoin de quelque chose qui se comporte comme un pointeur... Pertinentes commentaire, je cite: "pourquoi? pourquoi auriez-vous besoin de pointeurs dans matlab? code matlab est un script qui sera compilé en pseudo-code dans le cas d'une fonction. Je ne pense pas que c'est utile de penser à elle comme vous le feriez en C++. Je pense que vous devriez voir l'argument en passant que le passage par référence. si vous voulez réduire le nombre d'arguments, les mettre dans un vecteur ou dans une struct."
- Vous n'avez pas seulement besoin de pointeur ou de référence de comportement lors du passage d'arguments aux fonctions. Vous pourriez simplement pour éviter la répétition de x(2).y(4).z(7).w(i) dans votre code. Et souvent, vous ne voulez pas juste d'accès en lecture à la variable/sur le terrain. Ici, une seule lettre de la variable/les noms de champ sont utilisés, mais dans le bon code, la variable/les noms de champ sont de nature descriptive et donc plus longtemps.
Vous devez vous connecter pour publier un commentaire.
Matlab est à 99% un laissez-passer-par-valeur de l'environnement, qui est de ce que vous avez démontré. Le 1% qui est passé par référence est de poignées, soit gérer les graphiques (sans intérêt ici) ou la poignée de classes, qui sont assez proches de ce que vous voulez.
D'utiliser une poignée de classe pour faire ce que vous décrivez, placez le code suivant dans un fichier d'appel
RefValue
.Cela crée une "poignée" de la classe, avec une propriété unique appelée "données".
Maintenant, vous pouvez essayer:
vous pouvez essayer quelque chose de celui-ci;
Vous pouvez également définir un implicite sur la poignée de la
x
par la définition d'une fonction sury
référence:Dans MATLAB, ce n'est pas possible. Cependant, il existe de nombreuses façons d'obtenir un comportement similaire. Par exemple, vous pourriez avoir un tableau
a = [1, 5, 3, 1]
et l'indice, puis parx
ety
. Pourx = 2
, vous pouvez assignera(x) = 7
,y = x
, et une fois que vous changeza(x) = 4
,a(y) == 4
.Afin d'indexation peut être le moyen le plus rapide pour émuler les références, mais si vous voulez une solution élégante, vous pouvez passer par des variables symboliques comme @natan points. Ce qui est important à prendre à partir de cela est qu'il y a pas de pointeurs dans MATLAB.