Programación R para implementar algoritmo de generación de combinaciones
Hay algunas preguntas que requieren confirmación por parte del propietario del tema. Si encuentra otros problemas, puede plantearlos y resolverlos juntos.
¿Está claro? A
?Las características de cada imagen pequeña, 1 significa color, 0 significa en blanco.
A(1). ¿Zueco? =?[1?0?0?0;? 1?1?0?0;? 0?1?1?1;? 0?1?1?0];
Respuesta (2). ¿Zueco? =?[1?0?0?0;? 1?1?0?0;? 0?1?1?1;? 0?1?1?0];
Respuesta (3). ¿Zueco? =?[1?0?0;? 1?1?0;? 0?1?1;? 0?1?1];
Respuesta (4). ¿Zueco? =?[1?0?0;? 1?1?0;? 0?1?0;? 0?1?1];
?La imagen grande está dividida en M*N celdas.
m? =?30/2;
n? =?30/2;
?Número de celdas superpuestas permitidas
x? =?0;
?Intente generar una imagen grande 1000 veces y salga del ciclo una vez que se genere una imagen que cumpla con los requisitos.
¿Para qué? ¿intentar? =?1:1000
?Generar imagen en blanco
b? =?Punto cero (M, N);
?Rellene cada imagen pequeña con la imagen grande por turno.
¿Para qué? i=1: Longitud (A)
? ¿Gira aleatoriamente la imagen pequeña 0, 90, 180, 270 grados?
¿Se pudre? =?piso(rand*4);
t? =? Respuesta (1). Patten;
¿Para qué? j=1: podredumbre
t? =?rot 90(T);
Fin
?Rellene aleatoriamente la imagen grande con imágenes pequeñas rotadas aleatoriamente.
[m,n]? =?Dimensiones (toneladas);
r? =?Piso(Rand*(M-m))? ?1;
c? =?piso(rand*(N-n))? ?1;
B(r: r m-1, c: c n-1)? =?B(r: r m-1, c: c n-1)? ?t;
Fin
?Si la imagen generada cumple con los requisitos del área superpuesta, salga del bucle.
¿Y si? suma(B(:) gt;1)?lt=?x,? romper,? Fin
Fin
FPRINTF('\nCamuflaje digital* * *generado después de i intentos, el patrón es el siguiente:\n\n ',? intentar)
disp(num2str(B))
Color (B)
Actualmente existen los siguientes problemas:
1. En la actualidad, la imagen simplemente se genera usando pcolor, pero hay un problema porque la tabla de datos de pcolor aparece en el vértice de cada celda, pero lo que realmente se necesita es estar representada en la superficie de la celda. Consideraré mejores métodos de dibujo más adelante.
2. Este algoritmo tiene algunos problemas menores. Al principio pensé que era muy sencillo. Pensé que dado que la imagen pequeña se compone de celdas de 2*2 cm, la imagen de 30x30 debería dividirse en celdas de 15x15 usando 2 como unidad básica. Pero después de editar, me di cuenta de que algo andaba mal con este procesamiento. Por ejemplo, se pueden ordenar imágenes pequeñas a partir de 2 cm (es decir, media unidad), lo que no cumple con el algoritmo.
3. Dos preguntas que requieren confirmación del sujeto:
(1) Los dos patrones siguientes tienen solo tres columnas de celdas. ¿Quieres considerar la existencia de una cuarta columna? En otras palabras, al ordenar la imagen grande, ¿ha considerado (sin rotar) que debería haber una columna en blanco en el extremo derecho?
(2)El patrón actual tiene solo dos colores. ¿Deberían haber cuatro colores diferentes para distinguir?