solución examen matlab 2007

Anuncio
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);
Descargar