Uploaded by Ivan Montesino Linares

Taller matlab

advertisement
1. Realizar el Laboratorio 1 del libro:
https://ptolemy.berkeley.edu/~eal/publications/lab-manual.pdf
L.1 Arreglos y Sonido
L.1.1 Sección I
Para obtener información sobre alguna función, utilizar el comando “help”. Ejemplo:
>> help size
1. Una variable en MATLAB es una matriz. Una matriz tiene dimensiones N × M, donde
N y M son enteros,. N es el número de filas y M es el número de columnas. Si N = M =
1, la variable es un escalar. Si N = 1 y M> 1, entonces la variable es un vector fila. Si N>
1 y M = 1, entonces la variable es un vector columna. Si tanto N como M son mayores
que uno, entonces la variable es una matriz, y si N = M, entonces la variable es una
matriz cuadrada. Los coeficientes de una matriz son números reales o complejos.
(a) Cada uno de los siguientes comandos es una asignación de un valor a una variable
llamada matriz. Para cada uno, identifique las dimensiones de la matriz (M y N),
identifique si la variable es un escalar, un vector fila, un vector columna o una matriz
➢
➢
➢
➢
➢
➢
➢
array = [1 2 3 4 5]
array = [1:5]
array = 1:5
array = [1:1:5]
array = [1:-1:-5]
array = [1 2; 3 4]
array = [1; 2; 3; 4]
(b) Cree una matriz de 2 × 3 que contenga datos arbitrarios. Explore usando las
funciones de MATLAB zeros, ones, eye y rand para crear la matriz. Encuentre una
manera de usar la matriz cuadrada eye(2) como parte de su matriz de 2 × 3. Verifique
los tamaños de sus matrices usando size.
(c) Utilice el tamaño y la longitud de los comandos de MATLAB para determinar la
longitud de los conjuntos dados por 1: 0.3: 10 y 1: 1: -1. Considere más generalmente el
patrón para la creación de un array = start: step: stop, donde start, stop y step son
variables escalares o números reales. ¿Cuántos elementos hay en el arreglo? De una
expresión en MATLAB en términos de las variables start, stop y step. Es decir,
deberíamos poder hacer lo siguiente:
➢ start = 1;
➢ stop = 5;
➢ step = 1;
➢ array = start:step:stop;
Ahora evalúe su expresión por medio de: length(array).
2. MATLAB puede usarse como lenguaje de programación de propósito general. Sin
embargo, a diferencia de un lenguaje de programación de uso general, tiene
características especiales para operar con vectores y matrices, que lo hacen
especialmente conveniente para modelar señales y sistemas.
(a) En este ejercicio se usará Matlab para Calcular la siguiente sumatoria, usando un
ciclo for.:
25
∑ k
k=0
(b) Use la función sum para dar una especificación más compacta de una línea de la
suma en la parte (a). La diferencia entre estos dos enfoques. ilustra la diferencia entre
usar MATLAB y usar un lenguaje de programación más tradicional. El bucle for está
más cerca del estilo usaría con C ++ o Java. La función suma ilustra lo que MATLAB
funciona mejor: operaciones compactas en matrices enteras.
(c) En MATLAB, cualquier función integrada que opera en un escalar también puede
operar en una matriz. Por ejemplo,
➢ sin(pi/4)
➢ sin([0 pi/4 pi/2 3*pi/4 pi])
Esta característica se llama vectorización. Use la vectorización para construir un vector
que tabula los valores de la función sin para el conjunto {0, π / 10, 2π / 10, ..., π}. Use la
notación de colon explorada en el ejercicio anterior.
(d) Dadas dos matrices A y B que tienen las mismas dimensiones, MATLAB puede
multiplicar los elementos de manera puntual utilizando el operador. *. Por ejemplo,
➢ [1 2 3 4].*[1 2 3 4]
Usar esta multiplicación punto a punto para tabular los valores de sen2 θ para el conjunto
{0, π/10, 2π/10, ... , π}.
3. Una señal de tiempo discreto puede ser aproximada en MATLAB por un vector (ya
sea una fila o un vector columna). Para este este ejercicio, se construirán algunos de
esos vectores y trazarlos.
(a) Cree un arreglo que sea un vector de fila de longitud 36, con ceros en todas partes
excepto en la posición 18, donde tiene el valor 1. (Sugerencia: intente ayudar con ceros
para encontrar una manera de crear un vector de fila con sólo ceros y luego asignar el
18º elemento de este vector, el valor uno.) Esta matriz se aproxima a impulso de tiempo
discreto, que es una señal que es cero en todas partes excepto en un punto de muestra.
Usaremos impulsos para estudiar sistemas lineales. Dibujar la señal de impulso, usando
tanto la función plot como stem.
(b) Dibujar a mano la onda sinusoidal x: [−1, 1] → Reales, dada por
∀ t ∈ [−1, 1], x (t) = sin (2π × 5t + π / 6).
En su boceto, trace cuidadosamente el valor en el momento 0. Asuma el dominio
representa el tiempo en segundos. ¿Cuál es la frecuencia de esta onda sinusoidal en
Hertz y en radianes por segundo, cuál es su período en segundos y cómo Cuántos
ciclos completos hay en el intervalo [−1, 1]?
(c) Muestree la función x de la parte anterior a 8 kHz, y usando MATLAB, graficar las
muestras para todo el intervalo [−1, 1]. Cuántas muestras hay?
(d) Cambie la frecuencia de la onda sinusoidal de la sección anterior a 440 Hz y graficar
la señal para el intervalo [−1, 1]. ¿Por qué es difícil de leer? Trace solo las muestras
que se encuentran en el intervalo [0, 0.01] (esto es un Intervalo de 10 ms).
(e) El sonido de la función MATLAB (ver help sound) con sintaxis
➢ sound (SeñalMuestreada, frecuencia)
envía la matriz unidimensional o el vector muestreado SeñalMuestreada tarjeta de audio
del PC. El segundo argumento especifica la frecuencia de muestreo en Hertz. Se
supone que los valores en SeñalMuestreada son números reales en el rango [−1.0, 1.0].
Los valores fuera de este rango se recortan a −1.0 o 1.0. Use esta función para
escuchar la señal que creó en el anterior parte. Escuche tanto un intervalo de 10 ms
como un intervalo de 2 segundos. Describir qué se escucha.
(f) Escuchar
➢ sound (0.5 * SeñalMuestreada, frecuencia)
➢ sound (2 * SeñalMuestreada, frecuencia)
donde sampledSignal es la señal que creó en la parte (d) anterior. Explique de qué
manera son diferentes de lo que escuchó en la versión anterior parte. Escucha a
➢ sound (SeñalMuestreada, frecuencia/2)
➢ sound (SeñalMuestreada, frecuencia*2)
Explicar porqué son diferentes
L.1.2 Sección II
1. Use MATLAB para graficar las siguientes funciones continuas en el tiempo f : [−0.1,
0.1]→Reales:
➢ ∀ t ∈ [−0.1, 0.1], f(t) = sin(2π × 100t)
➢ ∀ t ∈ [−0.1, 0.1], f(t) = exp(−10t) sin(2π × 100t)
➢ ∀ t ∈ [−0.1, 0.1], f(t) = exp(10t) sin(2π × 100t)
El primero de ellos es una señal sinusoidal normal. El segundo es una señal sinusoidal
con una envolvente exponencial decreciente. El tercero es una señal sinusoidal con una
envolvente exponencial creciente. Elija un período de muestreo para que las gráficas se
acerquen a funciones en tiempo continuo. Explicar la elección del período de muestreo.
Usar subplot para trazar las tres funciones en un mosaico. Incluya la figura en su
informe de laboratorio.
2. Usar MATLAB para escuchar una forma de onda sinusoidal de un segundo escalada
por un exponencial decreciente dada por
➢ ∀ t ∈ [0, 1], f (t) = exp (−5t) sin (2π × 440t).
Use una frecuencia de muestreo de 8,000 muestras / segundo. Describa cómo es este
sonido diferente de los sonidos sinusoidales que escuchó en la sección en el
laboratorio.
3. Construya una señal de sonido que consista en una secuencia de sinusoides de
medio segundo con envolventes decrecientes exponencialmente, como en la parte
anterior, pero con un secuencia de frecuencias: 494, 440, 392, 440, 494, 494 y 494.
Escuchar el sonido. ¿Puede identificar la melodía? En su informe de laboratorio,
entregue los comandos de MATLAB que producen el sonido.
4.Este ejercicio explora la relación entre las funciones de MATLAB y funciones
matemáticas
LABORATORIO 2
(a) Escriba un programa en MATLAB para generar y mostrar (usando la función stem)
las señales:
➢
➢
➢
➢
➢
➢
Dirac (respuesta de la unidad)
Paso de unidad (paso de Heaviside)
Firmar
Rectángulo
Seno
Cardinal sinusoidal
(b) Escriba una función en MATLAB [x, t] = sin_NU (f0, fs, T) para generar una señal
sinusoidal. Los parámetros de salida x y t son los vectores de amplitud y tiempo,
respectivamente. Los parámetros de entrada son f0 (frecuencia de la señal en Hz), fs
(frecuencia de muestreo en Hz), T (duración de la señal en segundos).
(c) Pruebe su función sin_NU con los valores de los parámetros de entrada ... y muestre
el resultado utilizando la función de trazado.
Para ilustrar el fenómeno de aliasing, realizamos dos experimentos simples que nos
permitan "escucharlo". Usando la función sin_NU del ejercicio 1:
(a) Genere dos señales sinusoidales de 1 kHz (duración de 2 segundos), la primera
señal a la frecuencia de muestreo de 20 kHz y la segunda señal a la frecuencia de
muestreo de 1.5 kHz;
(b) En el mismo gráfico, use la función de trazado para mostrar las dos señales versus t
en el rango 0 <t <5 mseg .;
(c) Escuche las dos señales una tras otra utilizando la función soundsc (x, fs); y
(d) Dé su interpretación de esta escucha.
Ejercicio 2.3: cuantización
La cuantización se realiza reemplazando cada valor de una señal analógica x (t) por el
valor del nivel de cuantificación más cercano. Para ejemplificar esta operación,
simulemos un ADC (convertidor analógico a digital) unipolar que tenga las
especificaciones técnicas: R = 10 voltios (rango de escala completa) y B = 3 (número de
bits).
(a) Escriba una función MATLAB y = adc_NU (x, R, B) donde x e y son vectores que
contienen la señal de entrada y la señal cuantificada, respectivamente;
(b) Pruebe su función con una señal de rampa de entrada que varía de -5 a 15 voltios (1
voltio por paso); y
(c) En el mismo gráfico, use las funciones de trazado y de vástago para mostrar la señal
de entrada y la señal cuantificada, respectivamente.
Cite As
Sanzhar Askaruly (2020). Lab 1 - Digital Signal Processing. Sampling and Quantization
(https://www.mathworks.com/matlabcentral/fileexchange/54530-lab-1-digital-signal-proc
essing-sampling-and-quantization), MATLAB Central File Exchange. Retrieved February
18, 2020.
Download