tipos - Matlab: enlace a variable, no a valor variable
tipos de variables en matlab (4)
En MATLAB, esto no es posible. Sin embargo, hay muchas maneras de obtener un comportamiento similar. Por ejemplo, podría tener una matriz a = [1, 5, 3, 1]
y luego indexarla por x
e y
. Para x = 2
, puede asignar a(x) = 7
, y = x
, y una vez que cambie a(x) = 4
, a(y) == 4
.
Por lo tanto, la indexación puede ser la forma más rápida de emular las referencias, pero si quiere una solución elegante, puede ir a través de variables simbólicas como señala @natan. Lo importante de esto es que no hay punteros en MATLAB.
Ha sido muy difícil usar google, la documentación de MATLAB, he pasado unas horas, y no puedo aprender cómo
x = 1
y = x
x = 10
y
ans = 10
lo que sucede en cambio es:
x = 1
y = x
x = 10
y
ans = 1
El valor de x se almacena en y. Pero quiero actualizar dinámicamente el valor de y para igualar x.
¿Qué operación uso para hacer esto?
Gracias
Matlab tiene un 99% de entorno de valor por paso, que es lo que acaba de demostrar. El 1% que se pasa por referencia se maneja, ya sea manejar gráficos (no relevante aquí) o manejar clases, que son bastante cercanas a lo que desea.
Para usar una clase de control para hacer lo que describes, coloca lo siguiente en una llamada de archivo RefValue
.
classdef RefValue < handle
properties
data = [];
end
end
Esto crea una clase "manejar", con una sola propiedad llamada "datos".
Ahora puedes intentar:
x = RefValue;
x.data = 1;
y = x;
x.data = 10;
disp(y.data) %Displays 10.
También puede definir un identificador implícito en x
definiendo una función en y
haciendo referencia a ella:
x = 1;
y = @(x) x;
y(x) % displays 1
x = 10;
y(x) % displays 10
puedes probar algo de lo siguiente;
x=10;
y=''x''
y
y =
x
eval(y)
x =
10