cómo hacer una matriz aleatoria considerando restricciones y otra matriz

Chicos, tengo un problema para hacer una matriz aleatoria considerando alguna restricción y otra matriz.

tengo matriz:

A= [ 1 4 3 5 2 6 8 7 10 11 12 9;
     4 1 2 3 6 5 9 8 7 10 11 12;
     1 2 3 4 5 6 12 9 8 10 11 7]

entonces, quiero hacer una matriz B (3,12) que tenga un valor entre 0 y 2 ([ 0 2]) al azar. pero hay alguna restricción:

a. no consecutive zeros (0) more than 2.
b. sum all element in each row in matrix B <=11,
c. if there is value 1 or 2 or 3 or 4 in coordinate (a,b) in matrix A. so we have to force in coordinate(a,b+1) in matrix B have value zero (0).

gracias por su ayuda antes chicos.

preguntado el 24 de agosto de 12 a las 08:08

teniendo en cuenta su otra pregunta y las respuestas que obtuviste allí, creo que realmente deberías poder resolver este problema por ti mismo ahora. Me encantaría ayudar, pero esta pregunta es tanto como las otras que me has pedido, que creo que ni siquiera te estás esforzando. Entonces: las dos primeras restricciones, ya sabes cómo hacerlo. que has probado para obtener la última restricción? -

@RodyOldenhuis: sí, el primero y el segundo lo sé porque usted, el sr. pero realmente, no sé cuándo tengo que compilar las tres restricciones anteriores. sabes que soy novato verdad. Siempre trato primero antes de preguntar aquí, ya sabes, mr. pero si no se como solucionarlo pregunto por aqui. para la tercera restricción: si uso mientras hago un bucle, tomará mucho tiempo. Solo quiero compartir con otro (rojo: aquí), si hay una persona que me ayude, realmente se lo agradeceré mucho. solo necesito ayuda mr. en realidad no quiero preguntarle a otro si sé cómo resolverlo. -

Para matrices tan pequeñas, cualquier posible degradación del rendimiento que provenga del uso de declaraciones de bucle explícitas, anidadas en 2, 3 o 4 de profundidad, en comparación con un enfoque vectorizado, será minúscula en comparación con el tiempo que dedica a hacer estas preguntas. Si puede lograr lo que quiere con los bucles, utilícelos. Si luego publicas una pregunta como ¿Pueden ayudarme a mejorar el rendimiento de estos bucles? obtendría respuestas mucho mejores que las que traerá la pregunta aquí. ¿Tiene la impresión de que SO se está cansando de escribir su código para usted y no lo ve haciendo más de su propio trabajo? -

@HighPerformanceMark: sí, lo siento si siempre te pregunto, bueno, gracias por tu ayuda y sugerencia. -

1 Respuestas

Entonces, si usa esta respuesta, para generar un B que cumple con las restricciones 1 y 2, puede usar algo similar a esto

B = rand(3, 12); %# Just an example matrix.
idx = bitand(A >= 1, A <= 4);
B([false(size(idx, 1), 1) idx(:,1:end-1)]) = 0

para hacer cumplir la tercera restricción.

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.