Matlab - ENMARCAR MATRIZ CON UN MARCO DADO

 
Vista:
sin imagen de perfil

ENMARCAR MATRIZ CON UN MARCO DADO

Publicado por Carlos (10 intervenciones) el 01/03/2018 20:56:47
Hola, estoy haciendo una funcion en matlab que dada una matriz imagen y un marco lo que tiene que hacer es enmarcar la matriz.
Para enmarcar la matriz se hace lo siguiente :

1. Crea una matriz B1 de tamaño 30x20 con valores ordenados por
columnas que vayan desde el 1 al 600.

2. Crea una matriz B2 de tamaño 30x22 de manera que las dos primeras
columnas coincidan con la primera columna de B1 y las dos últimas
columnas coincidan con la última columna de B1.

3. Crea una matriz B3 de tamaño 32x22 de manera que las dos primeras
filas coincidan con la primera fila de la matriz B2 y las dos últimas filas
coincidan con la última fila de la matriz B2


Bien hasta aqui es fácil y lo tengo hecho el problema viene cuando me piden esto :
Ejercicios (recuerda ejecutar diary off después de finalizar el
último ejercicio).
6.- Función de enmarcado: El objetivo de este ejercicio es crear una función de
enmarcado que nos sea útil cuando vayamos a aplicar convoluciones sobre
imágenes.
La función a crear deberá admitir como parámetros de entrada una matrizimagen
y el tamaño del marco.
Como salida se obtendrá una matriz-imagen con un marco con el tamaño
indicado y cuyo método de creación será aquel descrito en el ejercicio 2.
Si la imagen de entrada era de tamaño MxN y el tamaño del marco pasado por
parámetro es 3, la imagen de salida debería ser de tamaño (M+6)x(N+6).
Si para la creación de esta función necesitas el uso de un bucle FOR, consulta su
sintaxis a través de la ayuda de MatLab.


Bien mi funcion es la siguiente :

1
2
3
4
5
6
7
8
9
10
11
function [matriz_salida]=enmarcar(imagen,marco)
A=sort(imagen);
[m,n]=size(A);
B2=zeros(m,n+2*marco);
B2(1)=A(1);
B2(end)=A(end);
B2(:,end)=A(:,end);
B2=[A(:,marco) A A(:,n)];
B21=B2';
B3=[B21(:,marco) B21 B21(:,n)];
matriz_salida = B3';
Mi problema esta en que no me sale el tamaño de la matriz como me pide en el enunciado solamente me sale por ejemplo para una matriz de 30, 20 me sale un tamaño de 32,22 eso seria para un marco de tamaño 1 pero si es de 3 deberia ser 36,26 y a mi no me sale eso.
¿Alguien me puede ayudar y decirme el error? No encuentro el error
Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ENMARCAR MATRIZ CON UN MARCO DADO

Publicado por Carlos (10 intervenciones) el 01/03/2018 21:46:13
Pues con estos datos creo una matriz aleatoria de numeros entre 1 y 600 de 30,20 y la ordeno.
B1=sort(rand(30,20)*599+1);
Y con esa matriz se la paso a la funcion y la tiene que enmarcar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar