%----------------------------------------------------------------------------
% 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