SOLUCIÓN EXAMEN MATLAB 2007 EJERCICIO2: Main.m pruebas=importdata('productos.txt'); [mediaC, mediaF]=CalcularMedias(pruebas) [f, c]=size(pruebas); figure; hold on; grid on; subplot(2, 1, 1); plot(mediaC, 'b'); title('Medias obtenidas por cada producto'); subplot(2, 1, 2); plot(mediaF, 'r'); title('Medias obtenidas por cada prueba'); CalcularMedias.m function [mediaC, mediaF]=CalcularMedias(pruebas) [f, c]=size(pruebas); mediaF=zeros(1, c); mediaC=zeros(1, f);; % Medias por producto for i=1:f media=0; for j=1:c elem=pruebas(i, j); media=media+elem; end media=media/c; mediaC(i)=media; end %Medias por prueba for i=1:c media=0; for j=1:f elem=pruebas(j, i); media=media+elem; end media=media/f; mediaF(i)=media; end EJERCICIO 3: Main.m % Se especifica qué archivo se quiere utilizar fileName='monte.jpg'; I_gris=CalcularImagenGrises(fileName); [b, n]=RecuentoPixels(I_gris) CalcularImagenGrises.m function imagen_grises=CalcularImagenGrises(archivo) N=length(archivo); % n=numero de letras de la cadena 'archivo' formato=archivo(N-2:N); %formato guarda las tres ultimas letras matriz_de_colores=imread(archivo,formato) ; %Lectura del archivo matriz_de_colores=double(matriz_de_colores); %Paso a double matriz_de_colores=matriz_de_colores./255; %Escalado figure; image(matriz_de_colores) %Dibujo del JPG axis equal %Escalado horizontal y vertical X=size(matriz_de_colores,2); % X=numero de pixeles horizontales Y=size(matriz_de_colores,1); % Y=numero de pixeles verticales axis([1 X 1 Y]) %Encuadre de la imagen drawnow %Se obliga al programa a dibujar lo que se ha pedido imagen_grises=zeros(Y,X, 3); for c=1:X %Bucle para recorrer las columnas de la imagen for f=1:Y %Bucle para recorrer las filas de la imagen media=0; for k=1:3 %Bucle para recorrer los colores RGB de cada pixel media=media + matriz_de_colores(f,c,k); %Operacion end media=media/3; imagen_grises(f, c, 1)=media; imagen_grises(f, c, 2)=media; imagen_grises(f, c, 3)=media; end end figure;image(imagen_grises); %Dibujo de la nueva imagen obtenida axis equal %Escalado horizontal y vertical axis([1 X 1 Y]) %Encuadre de la imagen RecuentoPixels.m function [blancos, negros]=RecuentoPixels(imagen_gris) [f, c, p]=size(imagen_gris); blancos=0; negros=0; for i=1:f for j=1:c for k=1:p elem=imagen_gris(i,j,k) if imagen_gris(i, j, k)> 0.5 blancos=blancos + 1; else negros=negros + 1; end end end end EJERCICIO 4 Main.m clc; close all; clear all; vDisparo = 50; %Pedimos angulo del cañon angulo = input('angulo de disparo en º'); [x0, y0] = CalcularPosicionInicialXY(angulo) %Dibujamos el canon%Para DibujaCanon(angulo); %ecuacion de 2ºgrado del calculo de trayectoria y = y0 + v0y*t + 0.5*g*t^2 g = -9.8; % angrad = angulo*pi/180; % vox = vDisparo*cos(angrad); % voy = vDisparo*sin(angrad); [vox, voy]=CalcularVelocidadInicialXY(vDisparo, angulo) a b c d = = = = 0.5*g; voy; y0; sqrt(b*b-4*a*c); %dos soluciones t1 = (-b+sqrt(b*b-4*a*c))/(2*a); t2 = (-b-sqrt(b*b-4*a*c))/(2*a); %nos quedamos con la mayor tfinal = max([t1 t2]); %una vez se ha conocido el tiempo al impacto se calcula la trayectoria t = 0:0.1:tfinal; y = y0 + voy*t + 0.5*g*(t.^2); x = x0 + vox*t; grid on; plot(x,y);