LABORATORIUM nr. 12 MATLAB utwórz menu według

Transkrypt

LABORATORIUM nr. 12 MATLAB utwórz menu według
LABORATORIUM nr. 12
MATLAB
Zad.1 Wzorując się na poniższym przykładzie oraz materiałach pomocniczych z wykładu nr.4:
close all
figure(1)
set(gcf,'MenuBar','none','NumberTitle','off','Name','Lab. nr.4 z Matlab')
f= uimenu(gcf,'Label','File')
uimenu(f,'Label','Save','Callback','save','Separator','on','Accelerator','S')
uimenu(f,'Label','Quit','Callback','exit')
h= uimenu(gcf,'Label','Draw 3D')
h1= uimenu(h,'Label','membrane','Callback','membrane')
h2= uimenu(h,'Label','sphere')
uimenu(h2,'Label','sfera 10 części','Callback','sphere(10)')
uimenu(h2,'Label','sfera 30 części','Callback','sphere(30)')
utwórz menu według następującego schematu (utwórz skrypty rysujące właściwe wykresy funkcji):
Zad.2
W MATLAB mamy 4 podstawowe formaty zapisu obrazu (macierze binarna BIN-(0,1),
monochromatyczna GRAY-(0-256), RGB-(3x3), indeksów(1x1 plus paleta barw)), aby sprawdzić jaki to
obraz: wykorzystuj funkcje zwracające 1 lub 0: isbw, isgray, isind, isrgb.
Obrazy do przestrzeni MATLAB wczytujemy wykorzystując funkcję imread i=imread('football.jpg') a
wyświetlamy image(i)
W GUI utwórz interfejs użytkownika zawierający 2 kontrolki pushbutton (o nazwie ‘open file’ i ‘save
file’) w miejscu wywołania umieść właściwe fragmenty kodu (nie zapomnij zapoznać się z jego treścią :)
):
global obrazek;
[filename, pathname] = uigetfile({'*.tif'; '*.jpg'; '*.bmp'; '*.gif';
'*.png'},'Pick a file','C:\projekt');
image_name = strcat(pathname, filename);
obrazek = imread(image_name);
image(obrazek);
global obrazek;
[filename, pathname] = uiputfile({'*.tif'; '*.jpg'; '*.bmp'; '*.gif';
'*.png'},'Save Image','C:\projekt');
image_name = strcat(pathname, filename);
obrazek2=2*obrazek
imwrite(obrazek2,image_name);
Utwórz okno do rysowania wykresów/wizualizacji obrazów (kontrolka Axes). Wczytaj z internetu
dowolny obrazek w odcieniach szarości (monochromatyczny) zmień jego kontrast mnożąc macierz
obrazu przez liczbę 2, następnie zapisz poprawiony obraz do dowolnego folderu.
Zad.3
2
Rozwiąż równanie różniczkowe 2-giego rzędu o postaci: m d xt   kx  0 przedstawiające oscylator harmoniczny który pracuje w
dt 2
przedziale czasu t=<0;10>s, jego masa m=2g, a współczynnik sprężystości k=1.4 .
Warunki początkowe w którym znajduje się oscylator wynosza: x(0)=0.5m
oraz dx( 0 )  1m / s .
dt
Narysuj jak wygląda zależność położenia oscylatora w czasie x(t) oraz jak zmienia się jego prędkość w czasie V(t)= dx(t ) .
dt
Krok 1: Używając następujących oznaczeń
2
x1=x(t) , x2= dx(t ) , x  d xt   kx / m
3
dt 2
dt
sprowadź równanie 2-giego rzędu do
postaci równań 1-rzędu:  dx / dt   x 2 

 
 d 2 x / dt 2   x 

  3
Część programowa:
Krok 2: Przyjmij oznaczenia:
x2
 x2  
 i utwórz funkcję o nazwie: row_roz_RK.m o 2 zmiennych wejściowych t, x która obliczy wartość:

xprim     
 x3    kx1 / m 
xprim=[x(2); -k.*(x(1)./m)]
Krok 4. napisz skrypt Cw12z2.m, który wykorzysta wbudowaną funkcje Matlaba do obliczenia w/w równania metodą Rungego-Kutty.
[T, X] = ode45(rozRK, [ tpocz, tkoń, ], [ x(0),dx(0)/dt] )
Krok 5: Rysunek: plot(T,X(:,1),’b*’,T,X(:,2),’r*’) ; legend(‘x(t)’,’dx/dt’)