Está en la página 1de 15

UNIVERSIDAD MAYOR DE SAN ANDRES

FACULTAD DE TECNOLOGIA
ELECTRONICA Y TELECOMUNICACIONES

MATERIA:
LABORATORIO DE PROCESAMIENTO DIGITAL DE SEÑALES
DOCENTE:
ING. ARTURO MIGUEL LOPEZ CASAS
NOMBRES
OMAR CHOQUE CANAVIRI
CI:
9951145 LP
La Paz – Bolivia
A) PRIMERA FIRMA (SECCION X)

clear all
n=[-10:10]
x=(0.9).^n;
stem(n,x)
w=(1.11).^n;
stem(n,w)
x3=(0.9).^abs(n);
stem(n,x3);
y=exp(j*pi*n/5-pi/3);
stem(n,y);
z=x.*y;
v1=cos(pi*n/5-pi/3);
v2=sin(pi*n/5+pi/4);
v1par=0.5*(v1+fliplr(v1));
v1imp=0.5*(v1-fliplr(v1));
v1par(find(n==0))
v1imp(find(n==0))
u=[zeros(1,10) ones(1,11)];
e=x.*u;
B) SEGUNDA FIRMA
1) Genere un vector de tiempo (que se inicie en t = -1) de 20000 puntos en pasos de
1/10000
2) Genere la siguiente señal: -2+3*cos(20*pi*t)+sin(40*pi*t)
3) Genere un escalón unitario
4) Determine la parte par e impar del escalón
5) Grafique estas 3 funciones una sobre la otra en tres figuras y colores distintos (use
stem)

clear all
T=1/10000
t=[-1:T:20];
x=exp(t);
y=-2+3*cos(20*pi*t)+sin(40*pi*t)
u=[zeros(1,10) ones(1,11)];
upar=0.5*(u+fliplr(u));
uimp=0.5*(u-fliplr(u));
hold on
stem(t,x,'g')
stem(t,y,'y')
stem(u,'r')
C) TRABAJO DE INVESTIGACION:
“PROGRAMACIÓN DE ARCHIVOS M EN MATLAB”
INTRODUCCIÓN:
En Matlab tienen especial importancia los ficheros–M de extensión .m. Contienen
conjuntos de comandos a ejecutar o definición de funciones y se ejecutan al
teclear su nombre en la línea de comandos y pulsar intro (si se encuentra en el
Current Directory) o al pinchar sobre él en Current Directory con el botón derecho
del ratón y elegir run. Representan el centro de la programación en Matlab. Un
fichero .m puede llamar a otros ficheros .m y ficheros de comandos pueden ser
llamados desde ficheros de funciones. En estos casos es importante tener en
cuenta la definición de las variables a utilizar, en la línea de que tengan un
tratamiento local o global. Por defecto, Matlab considera las variables locales, es
decir, aunque varias funciones tengan la variable x, ésta es diferente en cada caso
a no ser que haya sido definida como global. Son ficheros de texto sin formato y
que pueden crearse a partir de un editor de textos, no obstante, lo mejor es utilizar
el editor del propio programa al que se accede por defecto al abrir un nuevo
fichero.

TIPOS DE DATOS
Hay 16 tipos de datos fundamentales , o clases, en MATLAB. Cada una de estas
clases tiene la forma de una matriz o matriz. Con la excepción de los manejadores
de funciones, esta matriz o matriz tiene un tamaño mínimo de 0 por 0 y puede
crecer a una matriz n-dimensional de cualquier tamaño. Un controlador de función
siempre es escalar (1 por 1).
El momento importante en MATLAB es que no es necesario utilizar ninguna
declaración de tipo o declaración de dimensión de forma predeterminada. Cuando
define una nueva variable, MATLAB la crea automáticamente y asigna el espacio
de memoria apropiado.
Ejemplo:
a = 123;
b = [1 2 3];
c = '123';

>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
b 1x3 24 double
c 1x3 6 char
Si la variable ya existe, MATLAB reemplaza los datos originales por uno nuevo y
asigna nuevo espacio de almacenamiento si es necesario.
Tipos de datos fundamentales
Los tipos de datos fundamentales son:
numérico, logical , char , cell , struct , table y function_handle .-
Tipos de datos numéricos :
Números de punto flotante (por defecto)
MATLAB representa números de punto flotante en formato de precisión doble o de
precisión simple. El valor predeterminado es la precisión doble, pero puede hacer
que cualquier número tenga una sola precisión con una función de conversión
simple:
a = 1.23;
b = single(a);

>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
b 1x1 4 single
Enteros
MATLAB tiene cuatro clases enteras con signo y cuatro sin signo. Los tipos con
signo le permiten trabajar con enteros negativos y positivos, pero no pueden
representar un rango de números tan amplio como los tipos sin signo porque se
utiliza un bit para designar un signo positivo o negativo para el número. Los tipos
sin firmar le ofrecen una gama más amplia de números, pero estos números solo
pueden ser cero o positivos.
MATLAB admite el almacenamiento de 1, 2, 4 y 8 bytes para datos enteros. Puede
ahorrar memoria y tiempo de ejecución para sus programas si utiliza el tipo de
entero más pequeño que acomoda sus datos. Por ejemplo, no necesita un entero
de 32 bits para almacenar el valor 100.
a = int32(100);
b = int8(100);

>> whos
Name Size Bytes Class Attributes

a 1x1 4 int32
b 1x1 1 int8
Para almacenar datos como un entero, debe convertir el doble al tipo de entero
deseado. Si el número que se está convirtiendo en un entero tiene una parte
fraccionaria, MATLAB redondea al entero más cercano. Si la parte fraccionaria es
exactamente 0.5, entonces, de los dos enteros igualmente cercanos, MATLAB
elige aquel para el cual el valor absoluto es mayor en magnitud.
a = int16 (456);
char
Las matrices de caracteres proporcionan almacenamiento para datos de texto en
MATLAB. De acuerdo con la terminología de programación tradicional, una matriz
(secuencia) de caracteres se define como una cadena. No hay un tipo de cadena
explícito en las versiones comerciales de MATLAB.
Lógico
Los valores lógicos de 1 o 0, representan verdadero y falso respectivamente. Se
usa para condiciones relacionales e indexación de matrices. Porque es
VERDADERO o FALSO tiene un tamaño de 1 byte.
a = logical(1);
Estructura
Una matriz de estructura es un tipo de datos que agrupa variables de diferentes
tipos de datos utilizando contenedores de datos llamados campos. Cada campo
puede contener cualquier tipo de datos. Acceda a los datos en una estructura
usando la notación de puntos del formulario structName.fieldName.
field1 = 'first';
field2 = 'second';
value1 = [1 2 3 4 5];
value2 = 'sometext';
s = struct(field1,value1,field2,value2);
Para acceder a value1, cada una de las siguientes sintaxis son equivalentes
s.first or s.(field1) or s.('first')
Podemos acceder explícitamente a un campo que sabemos que existirá con el
primer método, o bien pasar una cadena o crear una cadena para acceder al
campo en el segundo ejemplo. El tercer ejemplo está demostrando que la notación
de puntos entre parásitos toma una cadena, que es la misma almacenada en la
variable field1.
las variables de la tabla pueden ser de diferentes tamaños y tipos de datos, pero
todas las variables deben tener el mismo número de filas.
Age = [15 25 54]';
Height = [176 190 165]';
Name = {'Mike', 'Pete', 'Steeve'}';
T = table(Name,Age, Height);
célula. Es muy útil el tipo de datos MATLAB: la matriz de celdas es una matriz en
la que cada elemento puede ser de diferente tipo y tamaño de datos. Es un
instrumento muy fuerte para manipular los datos como desee.
a = { [1 2 3], 56, 'art'};
o
a = cell(3);
Manijas de función almacena un puntero a una función (por ejemplo, a función
anónima). Le permite pasar una función a otra función o llamar a funciones locales
desde fuera de la función principal.
Hay muchos instrumentos para trabajar con cada tipo de datos y
también funciones str2double conversión de tipos de
datos ( str2double , table2cell ).
Tipos de datos adicionales
Hay varios tipos de datos adicionales que son útiles en algunos casos específicos.
Son:
Fecha y hora: matrices para representar fechas, hora y
duración. datetime('now') devuelve 21-Jul-2016 16:30:16 .
Arreglos categóricos: es el tipo de datos para almacenar datos con valores de un
conjunto de categorías discretas. Útil para almacenar datos no numéricos
(memoria efectiva). Se puede utilizar en una tabla para seleccionar grupos de filas.
a = categorical({'a' 'b' 'c'});
Los contenedores de mapas son una estructura de datos que tiene una capacidad
única para indexar no solo a través de los valores numéricos escalares sino
también del vector de caracteres. Los índices en los elementos de un mapa se
llaman claves. Estas claves, junto con los valores de datos asociados con ellas, se
almacenan dentro del Mapa.
Las series temporales 
Son vectores de datos muestreados a lo largo del tiempo, en orden, a menudo a
intervalos regulares. Es útil para almacenar los datos conectados con pasos de
tiempo y tiene muchos métodos útiles para trabajar.

ARCHIVOS DE COMANDO
Comandos utilizados en el Matlab
Comando Descripción
abs Valor absoluto
acker Calcula la matriz K para ubicar los polos de A-BK, vea también place
axis Corrige la escala del gráfico actual, vea también plot, figure
bode Dibuja el diagrama de Bode, vea también logspace, margin, nyquist1
c2dm Pasa del sistema continuo al discreto
clf Borra la figura (use clg en Matlab 3.5)
conv Convolución (útil para multiplicar polinomios), vea también deconv
ctrb Matriz de controlabilidad, vea también obsv
deconv Deconvolución y división de polinomios, vea también conv
det Halla el determinante de una matriz
Respuesta al impulso de sistemas lineales de tiempo discreto, vea
dimpulse
también dstep
Diseño de reguladores LQR lineales cuadráticos para sistemas de
dlqr
tiempo discreto, vea también lqr
Simulación de sistemas lineales de tiempo discreto, vea también
dlsim
lsim
Respuesta al escalón de sistemas lineales de tiempo discreto, vea
dstep
también stairs
eig Calcula los autovalores de una matriz
eps Tolerancia numérica del Matlab
feedback Conexión de dos sistemas por realimentación.
Crea una nueva figura o redefine la figura actual , vea también
figura
subplot, axis
for Lazo For-Next
format Formato Numérico (dígitos significativos, exponentes)
function Para archivos-m del tipo función
grid Dibuja la grilla en el gráfico actual
gtext Agrega texto al gráfico actual, vea también text
help Ayuda
hold Mantiene el gráfico actual, vea también figure
if Ejecuta código condicionalmente
Devuelve la parte imaginaria de un número complejo, vea también
imag
real
Respuesta al impulso de sistemas lineales de tiempo continuo, vea
impulse
también step, lsim, dlsim
input Prompt para entrada de usuario
inv Inversa de una matriz
Genera grilla de coeficiente de amortiguamiento (zeta) y tiempo de
jgrid
establecimiento (sigma) constantes , vea también sgrid, sigrid, zgrid
legend Leyenda en un gráfico
length Largo de un vector, vea también size
linspace Devuelve un vector linealmente espaciado
Produce un diagrama de Nyquist en escala logarítmica , vea
lnyquist1
también nyquist1
log logaritmo natural, también log10: logaritmo común
loglog Grafica usando doble escala logarítmica, también semilogx/semilogy
logspace Devuelve un vector logarítmicamente espaciado
Diseño de reguladores lineales cuadráticos LQR para sistemas
lqr
continuos, vea también dlqr
lsim Simula un sistema lineal, vea también step, impulse, dlsim.
Devuelve margen de ganancia, margen de fase, y frecuencias de
margin
cruce, vea también bode
norm Norma de un vector
Grafica el diagrama de Nyquist, vea también lnyquist1. Note que
nyquist1 este comando reemplaza al comando nyquist para
obtener diagramas de Nyquist más precisos.
obsv Matriz de observabilidad, vea también ctrb
ones Devuelve un vector o matriz de unos, vea también ceros
Calcula la matriz K para ubicar los polos de A-BK, vea también
place
acker
plot Dibuja un gráfico, vea también figure, axis, subplot.
poly Devuelve el polinomio característico
polyadd Suma dos polinomios
polyval Valor numérico de un Polinomio
print Imprime el gráfico actual (a impresora o a archivo postscript)
pzmap Mapa de polos y ceros de sistemas lineales
Halla la cantidad de renglones o columnas linealmente
rank
independientes de una matriz
real Devuelve la parte real de un número complejo, vea también imag
rlocfind Halla el valor de k y los polos en el punto seleccionado
rlocus Grafica el lugar de raíces
roots halla las raíces de un polinomio
Encuentra el factor de escala para un sistema con realimentación
rscale
completa de estados
Set(gca,'Xtick',xticks,'Ytick',yticks) para controlar el número y el
set
espaciado de marcas en los ejes
Interconexión en serie de sistemas Lineales que no dependan del
series
tiempo
Genera grilla de razón de amortiguación (zeta) y frecuencia natural
sgrid
(Wn) constantes , vea también jgrid, sigrid, zgrid
Genera grilla de tiempo de establecimiento (sigma) constante, vea
sigrid
también jgrid, sgrid, zgrid
size Devuelve la dimensión de un vector o matriz, vea también length
sqrt Raíz cuadrada
Crea modelos en espacio de estado o convierte modelos LTI a
ss
espacio de estado, vea también tf
representación Espacio de estado a función de transferencia , vea
ss2tf
también tf2ss
ss2zp representación Espacio de estado a polo-cero ,vea también zp2ss
stairs Gráfico tipo escalera para respuesta discreta, vea también dstep
step Dibuja la respuesta al escalón , vea también impulse, lsim, dlsim.
subplot Divide la ventana Gráfico en secciones, vea también plot, figure
text Agrega texto al gráfico actual, vea también title, xlabel, ylabel, gtext
Crea una función de transferencia o convierte a función de
tf
transferencia, vea también ss
Función de Transferencia a representación en espacio de estado,
tf2ss
vea también ss2tf
representación Función de Transferencia a Polo-cero , vea también
tf2zp
zp2tf
title Agrega un título al gráfico actual
Devuelve el ancho de banda dado el coeficiente de amortiguamiento
wbw
y el tiempo de asentamiento o el tiempo de elevación.
xlabel/ylabel Agrega una identificación al eje horizontal/vertical del gráfico actual,
vea también title, text, gtext
ceros Devuelve un vector o matriz de ceros
Genera grilla de coeficiente de amortiguamiento (zeta) y frecuencia
zgrid
natural (Wn) constante , vea también sgrid, jgrid,sigrid
Polo-cero a representación en espacio de estado, vea también
zp2ss
ss2zp
Polo-cero a representación función de transferencia , vea también
zp2tf
tf2zp

ARCHIVOS DE FUNCIÓN
Las funciones se crean del mismo modo que un script seleccionado en el
menú New/Function y se guardan en un fichero que tiene el mismo nombre que la
función y extensión .m

La primera línea en el editor es la definición de la función que comienza con la


palabra clave function
function variables_salida=nombre_funcion(variables_entrada)
sentencias
end
nombre_funcion, es el nombre significativo que se le asigna a la función y coincide
con el nombre del fichero de extensión .m en el que se guarda el código de dicha
función. Las reglas para nombrar un función son las mismas que para las
variables, los nombres no deben de incluir espacios, ni se pueden utilizar plabras
reservadas por MATLAB.

FUNCION ENTRADA DE DATOS


variables_entrada, es el conjunto de parámetros que se le pasa a la función. Los
nombres de las variables van entre paréntesis y separadas por coma.
variabales_salida, es el valor o conjunto de valores de las variables devueltos por
la función. Las variables de salida van después de la palabra
reservada function entre corchetes cuadrados y separados por comas si hay
varios.
sentencias, líneas de código que tomando los valores de los parámetros de
entrada calculan mediante expresiones los valores que devuelve la función.
end, marca el final de la función es opcional (salvo en las funciones anidadas)
pero es conveniente acostumbrarse a ponerlo al finalizar la función.
Opcionalmente, en la segunda línea se pone un comentario, en el que se explica
la tarea que realiza la función. A continuación, una explicación detallada sobre las
variables de entrada y de salida
Cuando una función no devuelve ningún valor, se define
function nombre_funcion(variables_entrada)
Cuando una funcion no precisa de variables de entrada se define
function variables_salida=nombre_funcion
Cuando una función devuelve una solo resultado y se puede escribir, de dos
maneras
function [y]=nombre_funcion(a,b,c)
function y=nombre_funcion(a,b,c)
En general, definiremos una función del siguiente modo:
function [y1,y2]=nombre_funcion(a,b,c)
con tres argumentos a, b y c variables de entrada y que devuelve dos resultados
en las variables y1 e y2.
Una función se llama del mismo modo que las funciones predefinidas. Las
funciones se pueden llamar desde la ventana de comandos, desde un fichero
script o desde otra función.
Todas las variables en una función son locales a dicha función, incluyendo las de
entrada y las de salida.
Entrada y salida de datos
Existe un comando para introducir información en un programa cuando estamos
en modo de ejecución. Este comando es: v=input(‘Cadena de Caracteres’) input
realiza dos tareas:
1) Imprime en pantalla la cadena de caracteres que lleva como argumento.
2) Los datos que el usuario teclea en respuesta al letrero, los introduce en la
variable v.
Para que un programa en modo de ejecución pueda escribir letreros, avisos, etc.
por pantalla, se utiliza el comando: disp(‘Cadena de Caracteres’) que escribe la
cadena de caracteres que tiene como argumento en pantalla.
Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra
en pantalla el valor de la variable v.
Para escritura de texto y/o datos en pantalla, se puede utilizar la función:
sprintf(‘formato’, variables).
Ejemplos:
>> n=input(‘teclea el número de elementos’)
>>disp(‘este valor no es adecuado’)
Operadores
Ya hemos estudiado operadores de tipo aritmético. En este momento puede ser
de utilidad conocer otros tipos de operadores:
Operadores relacionales:
< Menor
<= Menor o igual
>= Mayor o igual
> Mayor
== Igualdad
~= Desigualdad
find(A) Devuelve los índices de los elementos no nulos
find(A condición) Devuelve los índices de los elementos de A que cumplen la
condición Operadores lógicos
~A Negación lógica
A & B Conjunción lógica (and)
A | B Disyunción lógica (or)
xor(A,B) or exclusivo, vale 1 si A o B, pero no ambos, valen 1
Todos estos operadores actúan elemento a elemento en matrices y vectores. Las
dimensiones y número de elementos de las tablas deben coincidir.
Ejemplo:
>> A=1:9; P=(A>2)&(A>6)
P=001110000

SENTENCIAS DE CONTROL
El uso de aplicaciones recursivas y condicionales es muy habitual en matemáticas.
Para ello si utilizan las bifurcaciones y los bucles.
Las bifurcaciones permiten realizar una u otra operación según se cumplan o no
ciertas condiciones. Los bucles repiten operaciones sobre datos distintos.
Algunas de las sentencias de las que dispone Matlab para este tipo de trabajos
son las siguientes:

Sentencia for
Permite ejecutar de forma repetitiva un comando o grupo de comandos. La forma
general de un bucle for es:
for variable=expresión
comandos
end
Por ejemplo:
for i=1:3;v(i)=1;end;v
111
>>
Así, un bucle for siempre empieza por la sentencia for y termina con la end. En su
interior incluye todo un conjunto de comandos que se separan por comas. En
algunos casos es bueno poner puntos y comas para evitar repeticiones en las
salidas. Por supuesto puede utilizarse en ficheros .m

Sentencia if
Mediante esta estructura se pueden ejecutar secuencias de comandos si se
cumplen determinadas condiciones. Su sintaxis es:
If condición
comandos
end
De forma más general:
If condición
comandos 1
else
comandos 2
end
que ejecuta comandos 1 si la condición 1 es cierta y comandos 2 si es falsa.
Como en el caso de for, se pueden anidar sentencias if:
If condición 1
comandos 1
elseif condición 2
comandos 2
elseif condición 3
comandos 3
...
else
end
Mediante el siguiente ejemplo se imprime en pantalla una frase, de tres posibles,
según sea el valor de la variable n:
N=input(‘introduce un número natural’)
If n=0,
disp(‘n es cero’)
elseif rem(n,2)==0
disp(‘n es par’)
else
disp (‘n es impar’)
end

Sentencia while
También dispone de la sentencia “haz mientras” que ejecuta un bucle mientras
una condición sea cierta. Su sintaxis es:
while condición
comandos
end
en el interior (comandos) se incluyen todo tipo de comandos que se separan por
comas y que se ejecutan mientras la condición sea cierta.
Como ejemplo calcularemos el mayor número factorial que no esceda a 10100:
n=1;
while prod(1:n)<1.e100,
n=n+1;
end,
n
Este otro ejemplo tiene como salida el vector 1 2 3 4 5 6.
v=1:9;
i=1; while v(i)<7
disp.(v(i))
i=i+1;
end
Continue
Esta sentencia hace que se pase inmediatamente a la siguiente iteración del bucle
for o while, saltándose todas las sentencias que existan entre el continue y el final
del bucle en esa iteración.
Break
Hace que se termine la ejecución de un bucle for o while. Nota: existen otras
sentencias que pueden ser de interés y que pueden consultarse en: matlab\lang -
Programming language constructs.

BIBLIOGRAFIA
https://riptutorial.com/es/matlab/example/4483/tipos-de-datos#:~:text=Los%20tipos
%20de%20datos%20fundamentales,%2C%20struct%20%2C%20table%20y
%20function_handle%20.&text=MATLAB%20tiene%20cuatro%20clases
%20enteras%20con%20signo%20y%20cuatro%20sin%20signo.

http://www2.caminos.upm.es/Departamentos/matematicas/Fdistancia/PIE/matlab/t
emasmatlab/TEMA%204.pdf

https://www.monografias.com/trabajos94/matlab-y-sus-comandos/matlab-y-sus-
comandos2.shtml

http://www.sc.ehu.es/sbweb/fisica3/basico/funcion/funcion.html

D) CONCLUSIONES
Se podría decir que matlab es un  programa en donde nosotros podemos crear o
definir un sistema, si tenemos su representación en términos de su función de
transferencia, sus polos y ceros o su representación en variables de estado. Esto
lo realizamos mediante las herramientas de control. De igual forma podemos
realizar transformaciones entre estas representaciones mediante el uso de los
mismos comandos y también podemos visualizar el sistema creado o modificado
mediante las gráficas que nos brindan.
Utilizando los comandos adecuados, pudimos aprender a modelar de una manera
práctica y clara la función de transferencia de cualquier sistema.
Algunas herramientas en Matlab nos ayudan bastante en los distintos cálculos que
debemos realizar al momento de trabajar con señales ya sean discretas o
continuas.

También podría gustarte