230 likes | 409 Views
W latach 70tych na zlecenie Nation a l Science Fundation powstały pierwsze biblioteki fortranowskie do oblicze ń numerycznych.
E N D
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 RYS HISTORYCZNY
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; clg 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)