Sie sind auf Seite 1von 5

Fonaments dInformtica 1r curs dEnginyeria Industrial

Prctica 6: Vectores y Matrices (I)


Objetivos de la prctica El objetivo de las prcticas 6 y 7 es introducir las estructuras de datos vector y matriz en el lenguaje MATLAB. MATLAB es fundamentalmente un programa para el clculo matricial. Definicin de vector Un vector es una coleccin finita y ordenada de elementos homogneos, es decir, elementos del mismo tipo. Cada elemento se identifica por su posicin (ndice) en el vector. Tanto los vectores como las matrices son variables que tienen nombres. Se sugiere utilizar letras maysculas para las matrices y minsculas para los vectores. Ejemplo: vector v de 5 elementos enteros -4 8 120 -15 22 v(1) v(2) v(3) v(4) v(5) Acceso a los elementos de un vector Segn el vector anterior, v(1) vale -4, v(2) vale -8, etc. Es decir, escribiendo el nombre del vector seguido de la posicin o ndice entre parntesis accedemos al elemento guardado en esa posicin del vector. A diferencia de otros lenguajes, para definir un vector (o matriz) en MATLAB, no es necesario definir previamente su tamao. MATLAB determina el nmero de elementos en funcin de los elementos que se le proporcionan. No podemos acceder a una componente del vector o matriz que no existe. Sin embargo, si aadimos un nuevo elemento al vector (matriz), MATLAB automticamente ajusta su tamao.

En primer lugar, se ver como introducir vectores desde teclado y posteriormente utilizaremos estas estructuras de datos para implementar funciones. Introducir vectores desde teclado Un vector se define desde teclado escribiendo sus elementos, separados por comas o espacios en blanco, entre corchetes:
>> v= [2 -5 sqrt(3)] v = 2.0000 -5.0000 >> w=[-10, 3.5, -6] w = -10.0000 3.5000 1.7321 -6.0000

Si queremos definir un vector columna, entonces los elementos irn separados por puntos y comas:
>> u= [0; -1; 6] u = 0 -1.0000 6.0000

de forma muy sencilla. Hemos visto ejemplos de este tipo en prcticas anteriores. Por ejemplo, para definir un vector v cuya primera componente sea el 3, la ltima el 15 y la distancia entre cada para de elementos consecutivos sea 2, tenemos que escribir:
>> v = [3:2:15] u= 3 5 7 9 11 13 15

MATLAB permite definir vectores cuyas componentes estn equiespaciadas

- Cuntos elementos tiene el vector anterior? Para acceder a la componente de un vector, basta con escribir el nombre del vector y el ndice de la componente entre parntesis. Por ejemplo:
>> v(4) ans= 9

- Cmo accederemos a la componente sexta de ese mismo vector? - Define un vector entre -5 y +5 con valores equiespaciados a intervalos de 0.5. Suma las componentes cuarta, dcima y vigsima de dicho vector.

Uso de vectores en funciones Tanto los vectores como las matrices pueden ser parmetros de entrada y de salida en una funcin. Ejemplo. Escribir una funcin que sume los elementos de un vector: donde n es el tamao del vector.
n i =1

v(i) ,

function s = suma_vec (v) % SUMA_VEC Calcula la suma de los elementos de un vector % s=suma_vec(v) s=0; %inicialmente la suma vale 0 n = length(v); %la funcin length nos devuelve %el nmero de elementos del vector for i=1: n s = s+ v(i); end

Ejercicios 1. Escribir una funcin que calcule la media de los elementos de un vector. 2. Escribir una funcin que calcule y devuelva la suma al cuadrado de las componentes de un vector:
n i =1

v i2

3. Escribir una funcin que calcule el producto escalar de dos vectores. Si v y w son los vectores y n su tamao, el producto escalar se calcula como:
n i =1

v i wi .

4. Escribir la funcin prod_vec_esc que calcule el producto de un escalar por un vector (devuelve el vector resultante de multiplicar todas las componentes del vector inicial por un nmero): [k*vi], i=1..n. 5. Escribir la funcin suma_vec_esc que calcule el vector resultante de sumar a cada una de las componentes de un vector dado, un nmero real: [k+vi], i=1..n. 6. Escribir la funcin minimo, que devuelva el mnimo de los elementos de un vector. 7. Escribir la funcin maximo que devuelva el mximo de los elementos de un vector. 8. Recta de regresin. Escribir una funcin que dados dos vectores vx e vy con las coordenadas en el plano de n puntos, calculen la recta que

los aproxima por mnimos cuadrados. Para calcular dicha recta, necesitaremos saber su pendiente m y su ordenada en el origen b, que se obtienen:
m=
n i =1 n

(xi yi )

i =1

xi 2

b=

i =1

yi m

n i =1

xi

Utilizar las funciones implementadas anteriormente para calcular m y b. La funcin deber tambin mostrar grficamente los valores iniciales y la aproximacin por mnimos cuadrados. Para ello, se aadirn las siguientes instrucciones:
xmin = minimo(vx); xmax = maximo(vx); ejex=[xmin:1:xmax]; %funcin que calcula el mnimo del vector vx %funcin que calcula el mximo del vector vx

%Calcular la recta de regresion como y=m *ejex + b ejetemp=prod_vec_esc(ejex, m); %vector * escalar ejey=suma_vec_esc(ejetemp, b); % vector + escalar plot(vx,vy,'s'); %Representa los valores reales hold on plot (ejex, ejey) %aproximacin por mnimos cuadrados hold off

Ejercicios adicionales 9. Las siguientes instrucciones nos permiten dibujar un tringulo en una pantalla grfica introduciendo los puntos con el ratn. Escribe un script con dicho estas instrucciones y comprueba su funcionamiento.
clf; %abre una pantalla de dibujo [x, y] = ginput (3); %Lee las coordenadas (x,y) de 3 puntos %sealados por el ratn en la pantalla % de dibujo figure (gcf); %la figura activa en ese momento es %ventana activa plot (x, y, 'r') %Dibujamos una lnea que une las % coordenadas de los puntos fill (x, y, 'w') %para cerrar el tringulo

La instruccin [vx, vy] = ginput (3), devuelve dos vectores con 3 elementos: el vector vx tiene las coordenadas x de los 3 vrtices y el vector vy las coordenadas y de dichos vrtices. Por tanto, x(1) e y(1) son las coordenadas del primer vrtice, x(2) e y(2) las del segundo vrtice y x(3) e y(3) las del tercero.

a) Modificar el script anterior para convertirlo en una funcin (llamada tringulo) que devuelva dos vectores con las coordenadas de los vrtices del tringulo. La funcin no tiene parmetros de entrada. b) Escribir una funcin (llamada baricentro) que calcule el baricentro de un tringulo, dados dos vectores con las coordenadas de sus vrtices. Las coordenadas del baricentro se calculan como: barx = (x1+x2+x3)/3 bary = (y1+y2+y3)/3 c) Construir un script con las siguientes instrucciones. En primer lugar, dibujarn el tringulo en la pantalla devolviendo sus vrtices, despus se calcular el baricentro y finalmente se escribe una ' en el punto x' determinado como baricentro. Comprobar su funcionamiento.
[vx, vy] = triangulo; [bx,by] = baricentro(vx, vy); text (bx, by, 'x');

10. Modificar la funcin del ejercicio anterior para dibujar en una pantalla grfica un rectngulo y que devuelva las coordenadas de los vrtices del rectngulo dibujado. Escribir tambin una funcin que calcule el permetro del rectngulo. 11. Modificar la funcin anterior para dibujar cualquier polgono con n lados. Escribir una funcin que calcule su permetro.

Das könnte Ihnen auch gefallen