
MATRIZ CUADRADA DE "UNOS" DENTRO DE MATRIZ CUADRADA DE "CEROS"
Publicado por Javier (16 intervenciones) el 12/02/2017 17:49:21
Hola, buenas tardes:
Quiero hacer el siguiente ejercicio:
Se pide realizar una función que se llame mi_cuadrado, que recibiendo como argumento de entrada dos números enteros n y m, devuelva una matriz cuadrada A de dimensión n×n que contenga ceros en todas sus componentes, salvo en las que formen un cuadrado de lado m centrado en la matriz, que serán unos.
He realizado el siguiente programa:
Cada uno de los dos algoritmos (probandolos por separado) en si están bien, tanto cuando n y m son pares como cuando son impares.
Sin embargo cuando los pruebo como un solo programa, introducindo el IF me sale el siguiente error:
NaN's cannot be converted to logicals.
Error in mi_cuadrado (line 5)
if (rem(n,2==0))&&(rem(m,2==0))
y no lo entiendo entiendo ya que el IF que planteo debería existir, por si me voy por el camino de los datos de entrada n y m pares como por n y m impares.
Gracias.
Un saludo.
Quiero hacer el siguiente ejercicio:
Se pide realizar una función que se llame mi_cuadrado, que recibiendo como argumento de entrada dos números enteros n y m, devuelva una matriz cuadrada A de dimensión n×n que contenga ceros en todas sus componentes, salvo en las que formen un cuadrado de lado m centrado en la matriz, que serán unos.
He realizado el siguiente programa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function A = mi_cuadrado(n,m)
A=zeros(n);
%Cuando n y m son pares
% if (rem(n,2==0))&&(rem(m,2==0))
for i=((n/2)-(m/2)+1):((n/2)+(m/2))
for j=((n/2)-(m/2)+1):((n/2)+(m/2))
A(i,j) = 1;
end
end
% end
%Cuando n y m son impares
for i=(((n-1)/2)-((m-1)/2)+1):(((n-1)/2)+((m+1)/2))
for j=(((n-1)/2)-((m-1)/2)+1):(((n-1)/2)+((m+1)/2))
A(i,j) = 1;
end
end
Cada uno de los dos algoritmos (probandolos por separado) en si están bien, tanto cuando n y m son pares como cuando son impares.
Sin embargo cuando los pruebo como un solo programa, introducindo el IF me sale el siguiente error:
NaN's cannot be converted to logicals.
Error in mi_cuadrado (line 5)
if (rem(n,2==0))&&(rem(m,2==0))
y no lo entiendo entiendo ya que el IF que planteo debería existir, por si me voy por el camino de los datos de entrada n y m pares como por n y m impares.
Gracias.
Un saludo.
Valora esta pregunta


0