%---------------------------------------------------------------------------- % INTELIGENCIA ARTIFICIAL - 2024 - TP01 %---------------------------------------------------------------------------- % 8. Función 2. Escribir una función con las siguientes características: % a) Debe generar una matriz MG (dimensión 10x15) de números enteros aleatorios en el % rango [-10 , +10]. % b) Debe encontrar todas las ocurrencia de una submatriz mc2x2 , dada por el usuario como % argumento de la función, dentro de la matriz MG. % c) La función devolverá la o las posiciones en un vector de nx2 (fila y columna) de todas las % ocurrencias de mc. En caso contrario generará un mensaje de error indicando que no hay % ocurrencias de mc. % d) La función deb verificar que la matriz ingresada sea de 2x2 y que su valores estén en el % rango indicado para MG. Caso contratio, se emitirá un mensaje de error . %---------------------------------------------------------------------------- function findM = searchSubMatrix(SM) MG=randi([-10,10],10,15) % MG=[1 2 0 0 3 4 0 0; 1 2 0 0 3 4 0 0; 8 8 8 8 8 8 8 8; 9 9 0 0 9 0 0 9;9 9 0 0 9 0 0 9 ] fil=0; col=0; ifil=1; jcol=1; bandReturn=true; if validateSubMatrix(SM) fprintf('ERROR.... \n') fprintf('El error puede deberse a que la dimension es incorrecta \n') fprintf('o que usted cargo con un valor fuera de rango [-10 10] \n') return end [filMG,colMG]=size(MG); [filSM,colSM]=size(SM); for i=1:filMG-filSM+1 for j=1:colMG-colSM+1 if MG(i:(i+filSM-1),j:(j+colSM-1))==SM fil(ifil)=i; col(jcol)=j; ifil=ifil+1; jcol=jcol+1; bandReturn=false; end end end if bandReturn fprintf('No hubo ocurrencias \n') return else findM=[fil;col]'; end end function band=validateSubMatrix(SM) band=false; [fil col]=size(SM); if (fil~=2 && col ~=2) band=true; end for i=1:2 for j=1:2 if(SM(i,j)<-10 || SM(i,j)>10) band=true; return end end end end