Códigos Matlab

La utopía está en el horizonte. Me acerco dos pasos, ella se aleja dos pasos. Camino diez pasos y el horizonte se desplaza diez pasos más allá. Por mucho que camine, nunca la alcanzaré. ¿Para qué sirve la utopia? pues: sirve para caminar. Eduardo Galeano

En esta sección colocaremos enlaces o archivos con códigos Matlab (scripts) usados en el curso. Algunos desarrollados para el propio curso y otros simplemente copiados de otros espacios.

Tutorial de Matlab

Un excelente tutorial preparado porel catedrático Javier García de Jalón de la UPM Madrid 

Archivos y GUIS del libro del prof Ashok Ambardar

Archivos de las actividades complementarias del libro Procesamiento de Señales Analógicas y Digitales de Ashok Ambardar.

Ubique, en la página, los archivos (ficheros) adsp_mfiles.zip y adsp_guis.zip , extraiga los archivos a una carpeta (le recomendamos en carpetas del mismo nombre, --por ejemplo, ADSP_GUIS--, y dentro de la carpeta de Toolboxes o la de Work) y luego, añada las nuevas carpetas al PATH de Matlab. Esto último puede hacelo presionando el botón de Start de Matlab (abajo a la izquierda) y seleccionando la opción Desktop Tools y luego Path.

Programas de Matlab para dibujar Diagramas de Bode (reales y aproximados)

Son archivos BodePlotGui.zip del SwarthMore College. También puede conseguir ayuda y otros ejemplos así como una breve introducción, en inglés, a los diagramas de Bode .

Listado de códigos utilizados en el tutorial de Matlab.

Observe que todo lo que está, en una misma línea, despues del símbolo % es un comentario al programa, que pretende ayudar a entender el comando.

Ud. sólo deberá introducir el comando (después del >>), por ejemplo >>x=sin(2*pi*t) y usar los comentarios (lo que esté después de %) para ayudarse a entender lo que esté haciendo.  

Programa

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Generacion de matrices y vectores. Operaciones con matrices y vectores %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


x=[2 3 4] % Como generar un vector fila
x' % su transpuesto vector columna
y=[5 6 7;8 9 0] % generando una matriz. Observe que el ; hace que salte a nueva fila
y' % la transpuesta de la matriz. Note que NO hemos asignado...
y(2,1) % a nadie la transpuesta de y. Por por lo tanto y(2,1)=9
z=y' % ahora si, z es la transpuesta de y
p=y*z % multiplicacion de matrices
pp=p^2 % elevacion al cuadrado de matrices CUADRADAS
p1=p*p % que es lo mismo que la multiplicacion de p por p
p2=p.^2 % ahora es la multiplicacion punto a punto

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Generacion automatica de matrices y vectores %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


t=0:.1:4; % generando un vector fila con valores del 0 al 4 en saltos de .1
x=sin(2*pi*t); % generando el seno de 2 pi t para el rango de t dado
size(x) % fijate cuantos valores hay en el vector x

plot(t,x) % grafica del seno de 2 pi t contra t
t=0:.01:4; % como no quedo muy bien hacemos los espacios de tiempo mas pequeños
x=sin(2*pi*t); % volvemos a calcular el seno para el nuevo t
plot(t,x) % regraficamos
dx=diff(x)/.01; % con diff calculamos la derivada de x (que llamamos dx) en el rango de t
size(dx) % miramos el tamaño del nuevo vector dx --observa que mide uno menos que x
size(x) % ¿lo ves?
length(t) % otra manera de medir un vector
t1=t(2:length(t)); % en este caso asignamos a el nuevo vector t1 el rango de t para dx
plot(t,x,t1,dx) % graficamos ambas señales

%%%%%%%%%%%%%%%%%%%%%%%%%%
% Subgraficas %
%%%%%%%%%%%%%%%%%%%%%%%%%%


subplot(1,2,1);plot(t,x) % o las graficamos en ambitos diferentes
subplot(1,2,2);plot(t1,dx)

%%%%%%%%%%%%%%%%%%%%%%%%%%
% hay que mencionar los operadores + - * / ^ %
% y los operadores .+ .- .* ./ .^ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% y tambien otras funciones importantes %
% como cos tan atan i j real imag conj log log10 %
% sqrt abs angle min max sign %
%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% use help sobre las funciones. Por ejemplo, help sqrt %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


x='4*t.*exp(-2*t)' % variables simbolica, observa el uso del * y .*
t=0:0.05:4; % espacio de tiempo en el que voy a evaluar
xe=eval(x); % evaluacion de la funcion en t
plot(t,xe) % grafica de la funcion

%%%%%%%%%%%%%%%%%%
% Operaciones logicas %
%%%%%%%%%%%%%%%%%%


q=find(xe>=0.7) % find encuentra los indices en los que es verdadero xe>=0.7
length(xe) % q tiene 6 elementos, el primero es el 9
xe(9) % observe que xe(9)=0.7189
xe(15) % pero que xe(15)=0.6905
k=find(xe==max(xe)) % otra vez buscamos el indice en el que xe es maximo
t(k) % tiempo en el que ocurre el maximo
xe(k) % valor del maximo

%%%%%%%%%%%%%%%%%%%
% Otros operadores relacionales %
% < >= <= == ~= %
% y logicos %
% & | ~ xor %
%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%
% funciones especificas del curso %
%%%%%%%%%%%%%%%%%%%%

t=-2:.01:4; % generacion del vector tiempo
x1=ustep(t-1); % escalon retrasado en uno
plot(t,x1)
x2=uramp(t-1); % rampa retrasada en uno
plot(t,x2)
x3=urect(.5*t-1); % pulso retrasado y expandido
plot(t,x3)
x4=tri(2*t-2); % triangulo retrasado y comprimido
plot(t,x4)
x5=sinc(t/2); % funcion sinc expandida
plot(t,x5)
x6=4*exp(-2*t).*cos(pi*t).*ustep(t); % combinacion de funciones. Tambien udelta
plot(t,x6)

Serie trigonométrica de tren de pulsos positivos y negativos.

Hay que copiar los comandos, pegarlos, por ejemplo, en una ventana de Notepad, y guadar el archivo (fichero) como, por ejemplo, serie_trig.m

Luego, desde la ventana de comandos de Matlab ejecutar: >> serie_trig

Archivo:

n=input('numero de sumandos= ');
t=-2:.01:2;
pulso=zeros(1,length(t));
for k=1:n
pulso=pulso+sin(2*(2*k-1)*pi*t)/(2*k-1);
end
plot(t,pulso)
grid