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 xt 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 xt 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’)