RYS HISTORYCZNY W latach 70tych na zlecenie National Science Fundation powstały pierwsze biblioteki fortranowskie do obliczeń numerycznych. Jeden z autorow tego oprogramowania Cleve Moler prowadził zajęcia z algebry liniowej na Uniwersytecie Nowy Meksyk. Napisał on uniwersalny program na korzystanie z bibliotek bez potrzeby programowania w FORTRANIE
Czytanie i zapisywanie save <nazwa pliku> x, save <nazwa pliku> x -ascii load<nazwa pliku>
Operacje na macierzach Wprowadzanie danych: formy zapisu 1:.2:20; 1:20; -2.2:- 1.3:-12.5 [1 3 12 23 2 3]; [1 3; 12 23; 2 3]; Polecenie input np. x=input(‘podaj x’); y=input(‘pod’,’s’); Rola znakow: ; , : spacja, enter Tworzenie macierzy z macierzy: x=[1 3; 12 23; 2 3]; y=[x x-2 2*x; x+2 x/2 x.^0.5]; elementy macierzy, y(3,5), zamiana y(3,5)=-2; y(3, 3:6)=1; y(3:6,3)=1; z=y(2,2:4); zz(3,3,:)=y(2,2:4); zz=zz’;
Standardowe funkcje i polecenia Trygonometryczne sin cos tan cot, asin atan Inne: log; log10; sqrt; exp; mean; diff; fft; spectrum Logiczne a=x==2; a=x>=2, a=x<=2 (skrypt str.31)
FUNKCJE function y=rys(x); y=x.^2-5; plot(x,y) grid x=-10:10; wprowadzamy - yy=‘x.^2-3’; y=inline(‘x.^2-3’); z=inline(yy) y(x); z(x) fzero(yy,-2)
polecenia Z=find(x==3)%znajduje indeks x rownego 3 - Cegiełła str49 size(x) % wypisuje ilość wierszy I kolumn - help MATLAB find(x) %znajduje indeksy dla ktorych x rózne od zera, można napisać: find(x==0) % to polecenie znajduje dokładnie miejsca zerowe A(:,4)=[] %usuwa z macierzy A 4-ta kolumne – Cegiełła str.36 tic ... toc , eval, eps, clear, help
Grafika Polecenia: plot(x,y,’k*y’); grid; xlabel(‘string’), ylabel text(x,y, ‘string’) axis([xmin xmax ymin ymax]) title(‘string’) Polecenia: stem, bar, stairs,polar, Loglog, semilogx, axis square, subplot
Funkcje I grafika wielu zmiennych Mesh; meshgrid; surface, surf, contour x=1:10; y=-2:.1:2; [xx,yy]=meshgrid(x,y) z=x.^2+y.^2; Bez pętli z=xx.^2+yy.^2;
Liczby zespolone 2*j; 2*I; sqrt(-4); abs real imag angle polar
Rachunek symboliczny Warunek działania symbolicznego - musi być: Toolboxes Symbolic Math (DEMO) syms a b c x x = solve(a*x^2 + b*x + c); x=solve('a*x^2+b*x+c=0') odpowiedź: x1=[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] x2=[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Inne formy 1. Rachunek symboliczny polecenie syms x y z; u=3*x^2-2x+3; solve(u) 2. y=inline('3*x.^2-2*x+3'); deklarujemy x=-10:10; y(x) ma postać postać numeryczną plot(y(x)) 3. ezplot('sin'); ezplot('x^3-2*x^2+3*x-5'); ezplot('x^3-2*x^2+3*x-5', [-20 30])
POLECENIE eval X=-3:3; y=input('y= ') wprowadzamy Y='x.^2-3' Wyliczamy postać numeryczną y z=eval(y) Y jest dalej postacią tekstową i można ją użyc np. jako title(y)
Polecenie HOLD X=-3:3; y=x.^2-3; plot(x,y) Hold on, hold off plot(y)
Simulink z generatorami przełącznikiem i dwoma oscyloskopami: generatory – Sources, Oscyloskopy : Sinks Przełącznik – Signal routing Rózniczkowanie: Continous
Pliki dzwiękowe Wavread, wavwrite, [Y,FS,NBITS,OPTS]=WAVREAD(...) x=wavread(‘proba’); x1=x(3000:length(x(:,1)),:); X0=x(1:length(x1(:,1)),:); xc=x0/2+x1/2; sound(xc,44100); echo
Przetwarzanie dźwięku Widmo fft Spectrum Segmentacja reshape specgram
Obrazy (pliki „jpg”) Imread, imwrite uint8 double X=imread(‘kosciol.jpg’) function y=rys(x) y=double(x); y1=y/256; y2=y1.*sin(y1*256); image(abs(y2))
Film %sprężyna clg m=moviein(20); v=2*pi:0.01:6*pi; for i=1:20 plot(v*i/20,sin(v)); axis([0,12*pi,-1,1]) m(:,i)=getframe; end; movie(m,-4)
Symulacja generatora dźwiękowego Chirp sinus kluczowany Szum fp=44100; fs=1000; df=1000; t=0:1/fp:1; X=sin(2*pi*(fs+df*t/max(t)).*t);
Przetwarzanie wyników z oscyloskopu Dane w ascii
Interface graficzny GUI Wywołuje się poleceniem guide Wkopiować np. przycisk pushButton Uruchamiamy inspektora w oknie View Wpisujemy w wierszu string np. start Zapisujemy nazwę i uruchamiamy (run) Wpisujemy na końcu program np. x=1:10 Figure stem(x)
Możliwe zagadnienia i testy