Soy no seguro de que me dieron exactamente lo que está pidiendo, pero pensé que lo que quiere es algo como lo siguiente:
Dada una interfaz de usuario con una variable, digamos una matriz que puede cambiar en tamaño, y otra variable (dependiente), que representa, por ejemplo, un índice en la matriz actual que desea utilizar desde la interfaz de usuario para indexar en la matriz.
Pero no desea arreglar el diseño de la variable de índice en la IU, ya que depende, en tiempo de ejecución, del tamaño de la matriz, que puede cambiar con la segunda variable.
Aquí hay un manipular, que tiene una interfaz de usuario que tiene una variable de control de índice, que se actualiza dinámicamente en la interfaz de usuario a medida que cambia el tamaño de la matriz.
Utilicé SetterBar para el índice (la variable dependiente) pero también puede usar el control deslizante. SetterBar dejó más claro en la interfaz de usuario lo que está cambiando.
Cuando cambia la longitud de la matriz, la variable de control de índice actualiza automáticamente su índice máximo permitido que se utilizará para coincidir con la longitud actual de la matriz.
Al acortar la matriz, el índice también se reducirá.
No estoy seguro de si esto es lo que quiere, pero si, se puede ajustar este enfoque para encajar en su problema
Manipulate[
Grid[{
{Style[Row[{"data[[", i, "]]=", data[[i]]}], 12]},
{MatrixForm[data], SpanFromLeft}
},
Alignment -> Left, Spacings -> {0, 1}
],
[email protected][{
{Text["select index into the array = "],
SetterBar[Dynamic[i, {i = #} &], Range[1, Length[data]],
ImageSize -> Tiny,
ContinuousAction -> False]
},
{
Text["select how long an array to build = "],
Manipulator[
Dynamic[n, {n = #; If[i > n, i = n];
data = Table[RandomReal[], {n}]} &],
{1, 10, 1}, ImageSize -> Tiny, ContinuousAction -> False]
, Text[Length[data]], SpanFromLeft
}
}, Alignment -> Left
],
{{n, 2}, None},
{{i, 2}, None},
{{data, Table[RandomReal[], {2}]}, None},
TrackedSymbols -> {n, i}
]
actualización 8: 30 PM fyi, acaba de hacer una corrección al código anterior para agregar una lógica adicional necesaria.
Como es, ambas listas son de la misma longitud. Quizás usando 'listlength [" subA "] = 5; listlength ["subB"] = 9; Función [subID, pointSO [subID] = RandomInteger [{1, 4}, {listlength [subID], 2}]] @ @ "subA", "subB"}; 'ilustra el problema que surge con Manipular solo – kglr
Mi solución funciona bien con listas de diferente duración. El manipulador para i se ajusta dinámicamente. Creo que el principal problema puede deberse a que no se especifica un valor predeterminado para i. – Timo
... Debe establecer explícitamente 'ControlType -> SetterBar'en la Manipulación interna para evitar diferentes controles en la Manipulación interna para' subA' y 'subB'. – kglr