La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Matlab/1346610-Convolucion-mediante-procedimientos-o-caculos-matematicos.html

Convolucion mediante procedimientos o cáculos matemáticos

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.
sin imagen de perfil

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 =)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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!!

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

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>> 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
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html

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: [email protected]
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 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
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html

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
sin imagen de perfil

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por jaime (1 intervención) el 31/10/2015 04:34:21
MatLab

Buen dia. Me podrian colaborar .Debo realizar la convolucion de estas señales. soy nuevo en el tema y me ha parecido un poco dificil
agradezco su atencion
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/11/2015 14:01:48
Hola Jaime. ¿ Cómo harías la convolucion en forma analítica es decir en una hoja sin el uso de matlab?.
Después ya puedes pensar como hacerlo en matlab.

Saludos
OSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro



http://matlabcaballero.blogspot.com
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/11/2015 15:06:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
clear all
t=-5:0.0001:5;
close all
for i=1:length(t)
    if t(i)<=-1
        x(i)=0;
    elseif  t(i)>-1 && t(i)<1
        x(i)=1;
    elseif  t(i)>=1
            x(i)=0;
        end
end
 
plot(t,x)
set(gca,'xtick',-8:8)
 set(gca,'ytick',-1:0.5:2)
 
 axis('image')
axis([t(1)-3 t(end)+3, min(x)-1 max(x)+1])
 
 figure(1);
   for i=1:length(t)
    if t(i)<0
        f(i)=0;
    elseif  t(i)==0
        f(i)=1;
    elseif  t(i)>0    && t(i)<=1
            f(i)=exp(-t(i));
    else
        f(i)=0;
    end
   end
 
figure(2); plot(t,f)
set(gca,'xtick',-8:8)
set(gca,'ytick',-1:0.5:2)
axis('image')
axis([t(1)-3 t(end)+3, min(f)-1 max(f)+1])
 
 figure(3); plot(t,x.*f)
set(gca,'xtick',-8:8)
 set(gca,'ytick',-1:0.5:2)
  axis('image')
 axis([t(1)-3 t(end)+3, min(x.*f)-1 max(x.*f)+1])


1
>> convolucion_de_vectores



Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro


http://matlabcaballero.blogspot.com

convolucion continua con la integral

Publicado por isaias rugelez (1 intervención) el 11/05/2016 05:15:07
buenas tengo un inconveniente con la convolucion continua en matlab me piden hacer la convolucion de dos señales ejemplo dos cuadrados iguales sin usar la herramienta de convolucion y hacer un script donde pueda cambiar los valores de la señales y graficar cada la dos señales mas la señal que resulta de la convolucion de esas señales si me pudieran colaborar les agradezco mucho llevo como 2 meses intentando hacer el programa y no doy como hacerlo.

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por fabrizio (1 intervención) el 08/08/2020 05:11:12
Buenas noches , me puede ayudar con estos dos ejemplos
1. Elabore una función en Matlab que calcule la Convolución Lineal
1. Elabore una función en Matlab que calcule la Convolución Circular

Gracias

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por DIMER (1 intervención) el 28/06/2018 06:32:57
Disculpe Señor José Jeremías, la verdad no comprendo muy bien el por qué el código de Geral no corre y genera error, como dijo usted, el código está bien realizado pero cómo se debe entonces ejecutar los archivos de Matlab ?

Le agradecería de verdad una respuesta pronta.
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/11/2018 14:55:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>h=[1 -2 4], x=[ 1 2  3;1 -2 3;2 -4 6;2 -4 6;3 -6 9], S = convolucion_disc(h,x)
 
 
h =
 
     1    -2     4
 
 
x =
 
     1     2     3
     1    -2     3
     2    -4     6
     2    -4     6
     3    -6     9
 
 
S =
 
     1    -2     4     0     0     0     0
     0     1    -2     4     0     0     0
     0     0     2    -4     8     0     0
     0     0     0     2    -4     8     0
     0     0     0     0     3    -6    12
     1    -1     4     2     7     2    12



Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Maria (2 intervenciones) el 02/11/2018 01:44:31
Hola me podrías explicar desde la linea 13 en adelante, muchas gracias, quedo atenta a una pronta respuesta.

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Maria (2 intervenciones) el 02/11/2018 01:48:29
Me podrías explicar desde la linea 13 en adelante por favoor, gracias.
sin imagen de perfil

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JUAN ANGEL (17 intervenciones) el 09/10/2019 02:03:56
Y si solo quiero el resultado?
Imágen de perfil de JOSE JEREMIAS CABALLERO

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 09/10/2019 13:53:22
1
2
3
4
5
6
7
8
9
10
>> h=[1 -2 4];x=[ 1 2  3;1 -2 3;2 -4 6;2 -4 6;3 -6 9]; S = convolucion_disc(h,x)
 
S =
 
     1    -2     4     0     0     0     0
     0     1    -2     4     0     0     0
     0     0     2    -4     8     0     0
     0     0     0     2    -4     8     0
     0     0     0     0     3    -6    12
     1    -1     4     2     7     2    12

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por Dan (1 intervención) el 02/12/2019 04:12:40
Muchas gracias me fue muy útil

Convolucion mediante procedimientos o cáculos matemáticos

Publicado por yuliana rojas (1 intervención) el 07/12/2022 23:17:23
Quisieras explicarme què es lo que hace cada lìnea de este algoritmo, necesito la explicaciòn de lo que hace cada linea y entender su funcionamiento. Muchas gracias, espero una pronta respuesta. ES URGENTE!!