variable texto str sentencias numeros letras imprimir entrada declarar datos convertir como string matlab variables variable-names

string - texto - sentencias en python



Crear variables con nombres de cadenas (6)

Supongamos que quiero crear 10 variables que se verían así:

x1 = 1; x2 = 2; x3 = 3; x4 = 4; . . xi = i;

Esta es una versión simplificada de lo que pretendo hacer. Básicamente solo quiero guardar líneas de código creando estas variables de forma automática. ¿Existe la posibilidad de construir un nombre de variable en Matlab? El patrón en mi ejemplo sería ["x", num2str(i)] . Pero no puedo encontrar una forma de crear una variable con ese nombre.


Si alguien más está interesado, la sintaxis correcta de la respuesta de Dan sería:

eval([''x'', num2str(i), '' = '', num2str(i)]);

Mi pregunta ya contenía la sintaxis incorrecta, así que es mi culpa.


También recomiendo usar una matriz de celdas o una estructura para tales casos. Creo que incluso te dará un impulso de rendimiento.

Si realmente necesita hacerlo, Dan le dijo cómo hacerlo. Pero también me gustaría apuntar a la función genvarname . Se asegurará de que su cadena sea un nombre de variable válido.

EDITAR: genvarname es parte del núcleo de Matlab y no de la caja de herramientas de estadísticas


Necesitaba algo como esto ya que no puede hacer referencia a estructuras (o matrices de celdas, supongo) desde el espacio de trabajo en bloques Simulink si desea poder cambiarlas durante la simulación.

De todos modos, para mí esto funcionó mejor

assignin(''base'',[''string'' ''parts''],values);


Puedes hacerlo con eval pero realmente no deberías

eval([''x'', num2str(i), '' = '', num2str(i)]); %//Not recommended

Más bien use una matriz de celdas:

x{i} = i


for k=1:10 assignin(''base'', [''x'' num2str(k)], k) end


A pesar de que hace tiempo que vengo, justed quería agregar otra respuesta.

la función genvarname es exactamente para estos casos

y si lo usa con una matriz de estructura tmp no necesita el cmd de evaluación

el ejemplo 4 de este enlace es cómo hacerlo http://www.mathworks.co.uk/help/matlab/ref/genvarname.html

for k = 1:5 t = clock; pause(uint8(rand * 10)); v = genvarname(''time_elapsed'', who); eval([v '' = etime(clock,t)'']) end

todo lo mejor

eyal