El siguiente codigo Matlab puede utilizarse para graficar la convolucion de dos señales y permitirnos ver el comportamiento a media que se genera la salida y[n]:
clear
clc
pause on
x=[1 1 1 1 1 1]; %cualquier vector menor de 10 elementos
h=[1 1 0 0 0 1 1 2 ]; %cualquier vector menor de 10 elementos
m=length(x);
n=length(h);
%invierte el vector h
hi=fliplr(h);
k=20;
X=[x,zeros(1,40-m)];
X= X([ end-k+1:end 1:end-k ]);
H=[h,zeros(1,40-n)];
H= H([ end-k+1:end 1:end-k ]);
xn=-20:20-1;
Y=zeros(1,40);
p=zeros(1,40);
h1=subplot(3,1,1);
stem(xn,X,'MarkerFaceColor','red')
% set(h1,'YLim',[a b])
h2=subplot(3,1,2);
stem(xn,H,'MarkerFaceColor','blue')
% set(h2,'YLim',[a b])
pause(3)
h2=subplot(3,1,3);
stem(xn,Y,'MarkerFaceColor','green')
%
Hi=[hi,zeros(1,40-n)];
for i=1:40-n
p=X.*Hi;
Y(i+n-1)=sum(p);
subplot(3,1,2);
stem(xn,Hi,'MarkerFaceColor','blue')
subplot(3,1,3)
stem(xn,Y,'r','MarkerFaceColor','green')
Hi= Hi([ end 1:end-1 ]);
pause(0.5)
end
pause off
salida=Y(abs(Y)>0);
salida2=conv(x,h);
[salida',salida2']
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
El codigo anterior reproduce graficamente la secuencia de convolucion de las señales x[n] y h[n], como se puede observar en las siguientes imagenes:
------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
disculpa sera podrías explicarnos lo q hace cada linea de tu código? es que estamos intentando entender tu código para poder adaptarlo a nuestro ejercicio
ReplyDeleteLo lógico es invertir el vector mas sencillo.
ReplyDelete% http://romansarmiento.blogspot.pe/
% OCTAVE
clear
clc
h=[1 1 1 1 1 1]; %cualquier vector menor de 10 elementos
x=[1 1 0 0 0 1 1 2 ]; %cualquier vector menor de 10 elementos
m=length(x);
n=length(h);
%invierte el vector h
hi=fliplr(h);
k=20;
X=[x,zeros(1,40-m)];
X= X([ end-k+1:end 1:end-k ]);
H=[h,zeros(1,40-n)];
H= H([ end-k+1:end 1:end-k ]);
xn=-20:20-1;
Y=zeros(1,40);
p=zeros(1,40);
h1=subplot(3,1,1);
stem(xn,X,'MarkerFaceColor','red')
% set(h1,'YLim',[a b])
h2=subplot(3,1,2);
stem(xn,H,'MarkerFaceColor','blue')
% set(h2,'YLim',[a b])
pause(3)
h2=subplot(3,1,3);
stem(xn,Y,'MarkerFaceColor','green')
%
Hi=[hi,zeros(1,40-n)];
for i=1:40-n
p=X.*Hi;
Y(i+n-1)=sum(p);
subplot(3,1,2);
stem(xn,Hi,'MarkerFaceColor','blue')
subplot(3,1,3)
stem(xn,Y,'r','MarkerFaceColor','green')
Hi= Hi([ end 1:end-1 ]);
pause(0.5)
end
salida=Y(abs(Y)>0);
salida2=conv(x,h);
[salida',salida2']
Vemos que en OCTAVE no se usa pause on ni pause off, y que el resultado es el mismo intercambiando x por h.
DeleteVemos que en OCTAVE no se usa pause on ni pause off, y que el resultado es el mismo intercambiando x por h.
DeleteLo lógico es invertir el vector mas sencillo.
ReplyDelete% http://romansarmiento.blogspot.pe/
% OCTAVE
clear
clc
h=[1 1 1 1 1 1]; %cualquier vector menor de 10 elementos
x=[1 1 0 0 0 1 1 2 ]; %cualquier vector menor de 10 elementos
m=length(x);
n=length(h);
%invierte el vector h
hi=fliplr(h);
k=20;
X=[x,zeros(1,40-m)];
X= X([ end-k+1:end 1:end-k ]);
H=[h,zeros(1,40-n)];
H= H([ end-k+1:end 1:end-k ]);
xn=-20:20-1;
Y=zeros(1,40);
p=zeros(1,40);
h1=subplot(3,1,1);
stem(xn,X,'MarkerFaceColor','red')
% set(h1,'YLim',[a b])
h2=subplot(3,1,2);
stem(xn,H,'MarkerFaceColor','blue')
% set(h2,'YLim',[a b])
pause(3)
h2=subplot(3,1,3);
stem(xn,Y,'MarkerFaceColor','green')
%
Hi=[hi,zeros(1,40-n)];
for i=1:40-n
p=X.*Hi;
Y(i+n-1)=sum(p);
subplot(3,1,2);
stem(xn,Hi,'MarkerFaceColor','blue')
subplot(3,1,3)
stem(xn,Y,'r','MarkerFaceColor','green')
Hi= Hi([ end 1:end-1 ]);
pause(0.5)
end
salida=Y(abs(Y)>0);
salida2=conv(x,h);
[salida',salida2']
Que tal, como puedo cambiar el valor del eje x?
ReplyDeleteAmigo me podria decir como graficar funciones como a^n
ReplyDelete