¿Cómo puedo acceder a un vector en Matlab al usar una función anónima que requiere entradas? -- matlab campo con functional-programming camp Relacionados El problema

how can i access a vector in Matlab when using anonymous function that requires inputs


0
vote

problema

Español

Estoy tratando de barajar un vector aún que aún no está definido El vector consiste en [0 0 0 ... 0 0 1 2 3 ... (n-zer)]

  • n : Duración del vector
  • zer : Número de ceros al principio

así:

  PartZeroPartNum=@(zer,n) [zeros(1,zer),1:(n-zer)]; shuffled=@(zer,n) PartZeroPartNum(zer,n)(randperm(n));   

no funciona como esta parte

  PartZeroPartNum(zer,n)(randperm(n))   

da el error:

no puede llamar o indexar en matriz temporal

En contraste, está funcionando si lo hago de esta manera:

  n=100; PartZeroPartNum=logical([zeros(1,zer),1:(n-zer)]); shuffled=@() PartZeroPartNum(randperm(n));   

¿Es posible barajar un vector más versátil mientras intentaba hacerte arriba? Tal vez de otra manera?

La razón es que necesito muchos ejemplos de vectores barajados, así que pensé en hacer esta función anónima y luego tomar muestras fácilmente así:

  ShVec= shuffled(50,100);   
Original en ingles

I am trying to shuffle a vector that is not yet defined the vector consist of [0 0 0 ... 0 0 1 2 3 ... (n-zer)]

  • n: length of vector
  • zer: number of zeros at the beginning

like so:

PartZeroPartNum=@(zer,n) [zeros(1,zer),1:(n-zer)]; shuffled=@(zer,n) PartZeroPartNum(zer,n)(randperm(n)); 

it does not work as this part

PartZeroPartNum(zer,n)(randperm(n)) 

gives the error:

cannot call or index into temporary array

In contrast, it is working if I do it this way:

n=100; PartZeroPartNum=logical([zeros(1,zer),1:(n-zer)]); shuffled=@() PartZeroPartNum(randperm(n)); 

Is it possible to shuffle a more versatile vector as I tried to do above? maybe in another way?

The reason is that I need many examples of shuffled vectors so I thought to make this anonymous function first and then take samples easily like so:

ShVec= shuffled(50,100); 
     
         
         

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Hay mejores formas de hacer esto, pero podría agregar otra función anónima

  PartZeroPartNum=@(zer,n) [zeros(1,zer),1:(n-excited)]; fIndex = @(x,ii) x(ii); shuffled=@(zer,n) fIndex(PartZeroPartNum(zer,n), randperm(n));   

Como se mencionó en los comentarios, sería mejor usar una función en su propio archivo M, esta sería la opción más legible según lo sugerido por CRIS.

 

There are better ways to do this, but you could add yet another anonymous function

PartZeroPartNum=@(zer,n) [zeros(1,zer),1:(n-excited)]; fIndex = @(x,ii) x(ii); shuffled=@(zer,n) fIndex(PartZeroPartNum(zer,n), randperm(n)); 

As mentioned in the comments, you would be better to use a function in its own m-file, this would be the most readable option as suggested by Cris.

 
 
 
 
1
 
vote

La equivalencia de llamada de función a A(index) es subsref(A, struct('type', '()', 'subs', {index})) Consulte aquí .

para que pueda hacer su función anónima

  .ipynb0  

Pero no lo haría, ya que no es muy legible.

 

The function call equivalence to A(index) is subsref(A, struct('type', '()', 'subs', {index})) see here.

So you can make your anonymous function

PartZeroPartNum=@(zer,n) [zeros(1,zer),1:(n-excited)]; shuffled=@(zer,n) subsref(PartZeroPartNum(zer,n), struct('type', '()', 'subs', {randperm(n)}); 

But I wouldn't do it as it is not very readable.

 
 
 
 

Relacionados problema

34  ¿Hay buenos puntos de referencia de Clojure?  ( Are there any good clojure benchmarks ) 
Editar: Los puntos de referencia de Clojure están arriba en El juego de puntos de referencia . He hecho esta pregunta Wiki de la comunidad e invite a o...

17  Valores sustitutos en una cadena con marcadores de posición en Scala  ( Substitute values in a string with placeholders in scala ) 
Acabo de empezar a usar Scala y desea comprender mejor el enfoque funcional para la resolución de problemas. Tengo pares de cuerdas, el primero tiene marcador...

93  ¿Por qué puedo definir estructuras y clases dentro de una función en C ++?  ( Why can i define structures and classes within a function in c ) 
Simplemente lo hizo por error, así en C ++, y funciona. ¿Por qué puedo hacer esto? int main(int argc, char** argv) { struct MyStruct { int so...

0  Convertir cadena para enumerar en estándar ml [duplicado]  ( Convert string to list in standard ml ) 
Esta pregunta ya tiene respuestas aquí : cerrado hace 10 años . posible duplicado: Abrir a...

101  Composición Haskell (.) VS F # 'S PUBLE OPERADOR DE ADELLOSO (|>)  ( Haskell composition vs fs pipe forward operator ) 
En F #, el uso del operador de sujeción, |> , es bastante común. Sin embargo, en Haskell, solo he visto la composición de la función, (.) , utilizando. Enti...

1473  ¿Qué es un monada?  ( What is a monad ) 
Haber analizado brevemente a Haskell recientemente, ¿cuál sería una explicación breve, sucinta, práctica en cuanto a lo que es esencialmente una monada? H...

162  ¿Cuál es el estado de la programación multinúcleo en Haskell?  ( Whats the status of multicore programming in haskell ) 
¿Cuál es el estado de la programación multinúcleo en Haskell? ¿Qué proyectos, herramientas y bibliotecas están disponibles ahora? ¿Qué informes de experiencia...

103  ¿Cómo puedo usar la programación funcional en el mundo real? [cerrado]  ( How can i use functional programming in the real world ) 
cerrado . Esta pregunta debe ser más enfocado . Actualmente no está aceptando respuestas. ...

6  ¿Las lenguas funcionales hacen frente a la complejidad?  ( Do functional languages cope well with complexity ) 
Tengo curiosidad en cómo se comparan las lenguas funcionales (en general) a idiomas más "tradicionales", como C # y Java para programas grandes. ¿El flujo del...

33  ¿Descubre que todavía necesita variables que pueda cambiar, y si es así, por qué?  ( Do you find you still need variables you can change and if so why ) 
Uno de los argumentos que he escuchado contra lenguajes funcionales es que la codificación de asignación única es demasiado difícil, o al menos significativam...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos