Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés.
Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Iniciar sesión Cerrar
Correo:
Contraseña:
Entrar
Recordar sesión en este navegador
Iniciar sesiónIniciar sesiónCrear cuentaCrear cuenta

Matlab - Convolucion mediante procedimientos o cáculos matemáticos

  Imprimir  
Vista:

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Juan Arango (2 intervenciones) el 26/08/2012 18:18:03
Hola,

Tengo que realizar un programa o funcion en matlab algo sencillo pero no se como hacerlo.

El programa empieza cuando se ingresan en la función dos vectores de diferente tamaño. Estos vectores deben multiplicarse distributivamente entre si, es decir, cada elemento del primer vector con cada elemento del siguiente vector. Asi, van arrojando filas. Es como si uno multiplicara un numero normal de varios dígitos, se multiplica el primero con todos, luego el segundo con todos y asi sucesivamente. Luego de tener eso, se necesita que el programa sume los valores resultantes y me de el resultado final.

Lo intente hacer con un for pero no se como hacer para que cada valor del for me lo guarde en un vector y no sencillamente lo remplaze con el siguiente.

function suma(x,h)
clc
n1=length(x);
n2=length(h);
for i=1:n2
y(1)=x(1)*h(i)
y(2)=x(2)*h(i)
end

Por ejemplo, teniendo los valores de h y x, debe realizar el proceso para obtener y.

Es un proceso de convolucion denominado "suma por columnas" pero no es posible usar el comando "conv". Toca todo paso por paso.


h=1 -2 3

x= 1 2 2 3

1 -2 3
2 -4 6
2 -4 6
3 -6 9

y= 1 0 1 5 0 9

Espero me puedan colaborar.
Muchas 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

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Geral (26 intervenciones) el 28/08/2012 04:34:07
hola!

espero te sirva esto =)

function S = convolucion_disc(h,x) nh = length(h); nx = length(x); % preasignando variables: y = zeros(nx,nh); Y = zeros(nx,nx+nh-1); S = zeros(1,nx+nh-1); % creando matriz: for j = 1:nx for i = 1:nh y(j,i) = h(i)*x(j); end Y(j,j:j-1+nh) = y(j,:); end % sumando: for l = 1:nx + nh - 1; S(l) = sum(Y(:,l)); end S = [Y;S];

salu2!!
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

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por MAO SAN (1 intervención) el 05/03/2013 16:33:41
Hola Geral.

Al copiar tu código en Matlab en un archivo .m, genera un error en la línea donde aparece el comando function, diciendo que no está permitido.

Te pido el favor me ayudes con eso, pues requiero hacer la convolución discreta con urgencia.

Gracias por tu atención, espero me puedas colaborar.

Mao.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (2621 intervenciones) el 05/03/2013 22:33:13
El codigo de Geral es correcto. El error es en la forma como estas ejecutando. Los archivos de matlab se ejecutan de acuerdo al tipo de tipo que es.

>> y=5*round(rand(1,4)+1), x=5*round(rand(1,6)+1), S = convolucion_disc(y,x) y = 10 5 10 5 x = 5 5 5 10 10 5 S = 50 25 50 25 0 0 0 0 0 0 50 25 50 25 0 0 0 0 0 0 50 25 50 25 0 0 0 0 0 0 100 50 100 50 0 0 0 0 0 0 100 50 100 50 0 0 0 0 0 0 50 25 50 25 50 75 125 200 225 225 175 100 25


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Cristian Mercdo Castro (1 intervención) el 06/04/2013 04:41:22
hola, es muy facil utilizar el comando "conv" de matalb, el cual realiza la convolucion entre dos vectores y se ejecuta el programa.
solo se definen los vectores:


h=[1 -2 3];
x= [1 2 2 3];
conv(h,x)
ans =
1 0 1 5 0 9



saludos:
Cristian Mercado Castro
Estudiante de Ingenieria Electronica
correo: camcastro87@hotmail.com
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (2621 intervenciones) el 06/04/2013 04:53:11
Gracias por tu aporte Cristian.
Pero mira las condiciones del usuario que hace la pregutna:
Es un proceso de convolucion denominado "suma por columnas" pero no es posible usar el comando "conv". Toca todo paso por paso.

Es por esa razón que Geral hace un código.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por katty tagua (1 intervención) el 03/11/2014 05:14:00
disculpe jeremias, yo utilice el codigo de geral, pero no me da la respuesta correcta... sera q me puede explicar como implementar su lineas
y=5*round(rand(1,4)+1), x=5*round(rand(1,6)+1), S = convolucion_disc(y,x)
... muchas gracias
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