10/13/2013. Przeszukiwanie macierzy WYŚWIETLANIE MACIERZY I ICH ROZMIARÓW >> A=[1 35; 467]; 1. find (A>3) 2. A>3. Operator dwukropkowy

Podobne dokumenty
WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

Ćwiczenie 1. Wprowadzenie do programu Octave

Kier. MTR Programowanie w MATLABie Laboratorium

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Przetwarzanie sygnałów

Ćwiczenie 1. Wprowadzenie do programu Octave

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Matlab Składnia + podstawy programowania

Zanim zaczniemy GNU Octave

Wprowadzenie do środowiska

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Podstawy Programowania C++

PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1:

Matlab Składnia + podstawy programowania

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Metody numeryczne Laboratorium 2

Języki skryptowe w programie Plans

ŚRODOWISKO MATLAB cz.3 Implementowanie algorytmów w skryptach i funkcjach programu

1 Programowanie w matlabie - skrypty i funkcje

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

MATLAB Z3. Rafał Woźniak. Warsaw, Faculty of Economic Sciences, University of Warsaw

Metody i analiza danych

WIMIM/MIBM/N1/-/B04 WIMIM/ME/S1/-/C46 WIMIM/IM/S1/-/B19

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

1 Podstawy c++ w pigułce.

Ćwiczenie 3: Wprowadzenie do programu Matlab

1 Przygotował: mgr inż. Maciej Lasota

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Wstęp do Programowania Lista 1

Podstawy programowania skrót z wykładów:

Elementy metod numerycznych - zajęcia 9

Pakiety Matematyczne - R Zestaw 2.

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

MATLAB tworzenie własnych funkcji

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Modelowanie rynków finansowych z wykorzystaniem pakietu R

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy MATLABA, cd.

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

ANALIZA DANYCH I PROCESÓW. Mgr inż. Paweł Wojciech Herbin

Argumenty wywołania programu, operacje na plikach

Zakaz rozpowszechniania w sieci, tylko na użytek studentów informatyki UwB. WYKŁAD 1- Matlab

Elementy Projektowania Inżynierskiego MATLAB Wprowadzenie.

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Biblioteka standardowa - operacje wejścia/wyjścia

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Instalacja Pakietu R

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

1 Podstawy c++ w pigułce.

Wprowadzenie do środowiska Matlab/GNU Octave

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Kier. MTR Programowanie w MATLABie Laboratorium. 1. Tworzenie m-plików skryptowych i uruchamianie skryptów

Podstawowe operacje na macierzach

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Informatyka Wykład 2

Metody i analiza danych

Podstawowe operacje na macierzach, operacje we/wy

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA, cz2.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

1 Macierze i wyznaczniki

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Bash - wprowadzenie. Bash - wprowadzenie 1/39

MATLAB Podstawowe polecenia

System operacyjny Linux

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Tablice, DataGridView

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wprowadzenie do programu Mathcad 15 cz. 1

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wprowadzenie do systemu Scilab

AUTOMATYZACJA OBLICZEŃ INŻYNIERSKICH. Dr hab. inż. Jacek Kucharski, prof. PŁ Dr inż. Piotr Urbanek

Scilab skrypty (programowanie)

I. Podstawy języka C powtórka

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Metody numeryczne. Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski

Zasady programowania Dokumentacja

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Wykład 4. Tablice. Pliki

Ćwiczenie: JavaScript Cookies (3x45 minut)

Transkrypt:

Wykład 2 1. Jeszcze o macierzach 2. Instrukcje sterujące 3. M-pliki: skrypty i funkcje. Przykłady skryptów. Globalność zmiennych. Metody debuggowania. 4. Funkcje a. Struktura funkcji b. Zmienne nargin, nargout, zmienne lokalne, zmienne globalne c. Subfunkcje i funkcje prywatne. d. Pseudokompilacje funkcji, usuwanie funkcji z pamięci Przeszukiwanie macierzy >> A=[1 35; 467]; 1. find (A>3) 2. A>3 A=[17,0,-9;30,-2,38] A(A>1) ans = 17 30 38 Operator dwukropkowy WYŚWIETLANIE MACIERZY I ICH ROZMIARÓW disp(a)-wyświetla zawartość macierzy A w oknie poleceń; size(a)-rozmiar dwuwymiarowej macierzy A (liczbę wierszy i kolumn) w postaci dwuelementowego wektora wierszowego; size(a,1)- liczba wierszy macierzy A; size(a,2)- liczba kolumn macierzy A; length(x)-długość wektora x lub dłuższy z wymiarów macierzy. [n m]=size(a)-przypisuje zmiennej n liczbę wierszy, a zmiennej m liczbę kolumn; 1

FUNKCJE GENERUJĄCE I PRZEKSZTAŁCAJĄCE MACIERZE eye(n)-tworzy macierz jednostkową n x n; ones(n)-tworzy macierz n x n o elementach równych 1; zeros(n)-macierz zerowa n x n; rand(n)-macierz n x nwypełniona liczbami pseudolosowymi z przedziału <0,1> o rozkładzie jednostajnym; randn(n)-macierz n x nwypełniona liczbami pseudolosowymi o rozkładzie normalnym ze średnią 0 i wariancją 1. A=diag(x)-macierz przekątniowa A ze składnikami wektora x na głównej przekątnej; x=diag(a)-utworzenie wektora x z elementów znajdujących się na głównej przekątnej macierzy A; inv(a)-utworzenie macierzy odwrotnej do A; repmat(a,n,m)-utworzenie macierzy przez powielenie podmacierzy A mrazy w poziomie i n razy w pionie; reshape(a,n,m)-utworzenie macierzy o n wierszach i m kolumnach z elementów branych kolejno kolumnami z macierzy A; rot90(a)-obrócenie macierzy A o 90 stopni w kierunku przeciwnym do wskazówek zegara; tril(a)-utworzenie z macierzy A macierzy trójkątnej dolnej; triu(a)-utworzenie z macierzy A macierzy trójkątnej górnej. size(a) ans = 2 2 length(a) ans = 2 Zmiana kształtu macierzy C=reshape(A,2,3) C = 1 2 0 3 4 6 Funkcje logiczne służącedo badania własności całych macierzy exist('nazwa') isempty(x) issparce(x) isstr(x) isglobal(x) MACIERZE/TABLICE WIELOWYMIAROWE Matlab dopuszcza definiowanie macierzy wielowymiarowych. Odwoływanie się do elementów takich macierzy wymaga liczby indeksów większej niż 2. Pierwszy indeks-wiersz macierzy (wymiar 1); Drugi indeks-kolumna macierzy (wymiar 2); Trzeci indeks-strona macierzy (wymiar 3) Czwarty indeks-książka macierzy (wym. 4); Piąty indeks-tom macierzy (wym.5); itd.; 2

PRZYKŁAD Instrukcje sterujące Na rysunku widoczna jest macierz trójwymiarowa o rozmiarze 2x3x2 (2 wiersze i 3 kolumny na każdej stronie, 2 strony); >>D(:,:,1)=[1 3 0; 5 7 2] % str.1; >>D(:,:,2)=[4 7 8; 1 0 5] % str.2; kolumny wiersze IF if n>0.. (instrukcje) elseif n = = 0.. (instrukcje) else.. (instrukcje) Relacje i wyraŝenia logiczne Operatory porównania (np. przy instrukcji if..): A= =B A~ =B A<B A<=B A>B A>=B WHILE while prod(1:n)<10^100 n=n+1 FOR for i=1:n % i=[1:n] x(i)=0!!! Zamiast takiej pętli moŝna bardziej elegancko i szybciej zeros(1:n) SWITCH: SWITCH zmienna CASE wartość zmiennej, polecenia CASE {wartość1, wartość2, }... polecenia OTHERWISE, END polecenia Uwaga: W przeciwieństwie do języka C, Matlab wykonuje tylko pierwszy pasujący przypadek i nie sprawdza pozostałych. Dlatego nie jest uŝywana instrukcja break w=4; s=0.5; operator= * ; switch operator case + w=w+s; case { *,.* } w=w*s; case / w=w/s otherwise w=w-s; 3

Charakterystyka M-plików M-pliki Skrypty Nie posiadają argumentów wejściowych, ani wyjściowych Operują na danych w przestrzeni roboczej Wygodne, kiedy często należy wykonać sekwencję tych samych poleceń Funkcje Mogą posiadać argumenty wejściowe i wyjściowe Wewnętrzne zmienne są lokalne dla funkcji Wygodne do rozszerzenia MATLABA o własne aplikacje Edytor Matlaba Skrypty Wywołanie skryptu poprzez nazwę. Zmienne skryptu są przechowywane w pamięci jako zmienne globalne. Debuggowanie menu edytora Debug lub Breakpoints. Ewentualne wyświetlanie wartości zmiennych (brak średnika). Ciało funkcji: function b=oblicz(x) Funkcja % pomoc (help) do uzyskania po poleceniu help oblicz % jak wyzej (wolna linia) % komentarz programisty % chcemy uzyskać funkcję f(x)=sin(x 2 )/(x 2 -x) b=sin(x.^2)./(x.^2-x); % średnik zapobiega podwójnemu wyświetleniu wyniku wywołanie: >> oblicz(3) >> u=oblicz([1,3,8,7]) Uwagi: a) WaŜna jest nazwa pliku, a nie nazwa f-cji zadeklarowana wewnątrz pliku (nazwa funkcji do 31 znaków). b) Funkcja lookfor rozpoznaje słowa tylko z pierwszej linii. c) Wszystkie zmienne w funkcji są lokalne (zapominane po wyjściu sprawdzić na ćw.). d) Nie moŝna wewnątrz funkcji odwoływać się do zmiennych zewnętrznych. Z (c) i (d) wynika, Ŝe moŝna dublować nazwy zmiennych e) Funkcję moŝna wywoływać rekurencyjnie, ale patrz (c). 4

MoŜna zmienną zmienić na globalną. NaleŜy wewnątrz funkcji zadeklarować global nazwa_zmiennej. Wówczas zmienna jest pamiętana w kolejnych wywołaniach funkcji, ale nie jest pamiętana w przestrzeni roboczej i innych funkcjach lub skryptach. MoŜna to uzyskać deklarując global nazwa_zmiennej równieŝ tam. Wówczas jest to sama zmienna. clear global usuwa wszystkie zmienne globalne. Funkcja moŝe mieć kilka argumentów wejściowych Ilość argumentów wejściowych moŝe być zmienna Funkcja moŝe zwracać kilka argumentów wyjściowych przykład: [X,Y]=fun2(3), gdzie X i Y mogą być np. macierzami o innych wymiarach. function nasza1(x) Funkcja ze zmienną globalną: global a; % zmienna a weszła oknem. b=a+x; % bez poprzedniej linii program zgłosiłby błąd. Jaki? function nasza2(x) global a; b=a-x; >> global a; a=7; >>nasza1(4)*nasza2(3) =>11*4=44 MoŜna teraz zmieniać zmienną a bezpośrednio z przestrzeni roboczej bez konieczności edycji obu funkcji. Funkcja zwracająca 2 wartości: function [mean,stdev]=stat(x) [m,n]=size(x) if m= =1 m=n mean=sum(x)/m stdev=sqrt(sum(x-mean).^2/(n-1)) Przestrzeń robocza funkcji: KaŜda funkcja ma przydzieloną pamięć odseparowaną od przestrzeni roboczej Matlaba. Dlatego funkcje operują na zmiennych lokalnych. Po wywołaniu funkcji Matlab przekształca funkcję w pseudokod i zapamiętuje go, co przyspiesza wykonywanie funkcji. Pseudokod moŝna usunąć z pamięci komputera poleceniem: clear nazwa_funkcji clear functions usuwa wszystkie funkcje clear all usuwa wszystkie funkcje i zmienne wywołanie: >> [M,S]=stat(rand(10,1000)) Pseudokompilacja funkcji Do przyspieszenia działania duŝych programów z rozbudowanym interfejsem graficznym. Uruchomienie funkcji z Matlaba tak jak m-plik, ale nie moŝna po kompilacji zmieniać nazwy pliku zewnętrznie bo się nie uruchomi jako program. pcode nazwa_funkcji => p-plik Powstaje plik nazwa_funkcji.p Funkcje wewnętrzne M-pliki mogą zawierać kody więcej niŝ jednej funkcji. Funkcja zapisana jako pierwsza jest funkcją główna i jej nazwa pokrywa się z nazwą m-pliku. Zmienne wszystkich funkcji z tego samego m- pliku są nadal lokalne dla tych funkcji. Subfunkcje mogą być wywoływane tylko przez funkcje z tego samego m-pliku. 5

Przykład (Higham): function max_err=poly1err(n) % POLY1ERR(N) Błąd w interpolacji liniowej dowolnej funkcji (p=a*x+c; a=(f1-f0)/(1-0); c=f0) max_err=0; f0=f(0); f1=f(1); x=linspace(0,1,n); p=x.*f1+(1-x).*f0; err=abs(f(x)-p); max_err=max(max_err,err); ; % Subfunkcja function y=f(x) % Function to be interpolated, F(x) y=sin(x); Funkcje o zmiennej ilości argumentów wejściowych nargin (number of input arguments) - WE function y=wiele(x1,x2) if nargin = = 1 x2=10; y=sin(x1*x2); >> wiele(pi,2) =>sin(2 * pi)=0 >> wiele(pi/20) =>sin(pi/2)=1 nargout dotyczy sposobu wywołania funkcji (w innej funkcji lub oknie poleceń). Funkcje o zmiennej ilości argumentów wyjściowych nargout (number of output arguments) WY. Dotyczy sposobu wywołania funkcji (w innej funkcji lub oknie poleceń). function [y1,y2]=wiele_wy(x1,x2) if nargin = = 1 y1=sin(x1*x2) else y2=cos(x1*x2) >> sinusik=wiele_wy(pi,2) => sinusik=0 ; F-cja nawet nie oblicza y2 >> [sinusik,kosinusik]=wiele_wy(pi,2) => sinusik=0, kosinusik =1 W przypadku kiedy w deklaracji funkcji nie chcemy określić maksymalnej liczby argumentów wejściowych lub wyjściowych (zostawiamy pełną swobodę uŝytkownikom naszej funkcji) moŝna uŝyć funkcji: varargin varargout function wynik=nasza_funkcja(varargin) fprintf ('Number of arguments: %d\n',nargin); celldisp (varargin) >> nasza_funkcja(ones(1), jakis napis',pi) Number of arguments: 3 varargin {1} = 1 varargin {2} = jakis napis varargin {3} = 3.1416 Operacje na plikach (standardowa obsługa zmiennych) save nazwa_pliku nazwa_zmiennej save nazwa_pliku nazwa_zmiennej ascii load nazwa_pliku load nazwa_pliku zmienne (jeŝeli format.mat) save save plik save plik lista load load plik load plik.rozsz zapisuje binarnie wszystkie zmienne w pliku matlab.mat; zapisuje binarnie wszystkie zmienne w pliku o nazwie plik.mat; zapisuje binarnie w pliku o nazwie plik.mat tylko zmienne wymienione; wczytuje zmienne zapisane w pliku matlab.mat; wczytuje zmienne zapisane w pliku plik.mat; wczytuje zmienne zapisane w pliku tekstowym o podanej nazwie i dowolnym rozszerzeniu; dane muszą tworzyć tablicę prostokątną; zostaną zapisane w macierzy o nazwie plik; 6

who Your variables are: A a b B ans x save plik A B save plik.dat A -ascii clear A A??? Reference to a cleared variable A. load plik.dat who Your variables are: B ans plik a b x load plik.mat who Your variables are: A a b x B ans plik OPERACJE NA PLIKACH (Znak po znaku) Przed zapisaniem lub odczytaniem danych należy otworzyć plik za pomocą funkcji fopen: id_pliku=fopen(nazwa_pliku,rodzaj_dostępu) Wartość argumentu r w a r+ w+ a+ opis otwarcie pliku do odczytu usunięcie zawartości istniejącego pliku lub otworzenie nowego i otwarcie go do zapisu otwarcie pliku w celu dopisywania elementów na jego końcu otwarcie pliku do odczytu i zapisu usunięcie zawartości istniejącego pliku lub utworzenie nowego i otwarcie go do odczytu i zapisu otwarcie pliku w celu czytania lub dopisywania elementów na jego końcu Funkcja fopen otwiera plik wskazany łańcuchem nazwa_pliku i zwraca unikatowy identyfikator pliku (zmienną id_pliku). Identyfikator ten powinien być używany we wszystkich operacjach wejścia i wyjścia wykonywanych na danym pliku. Jeśli operacja otwarcia pliku zakończy się sukcesem, zmienna id_pliku będzie nieujemną liczbą całkowitą, w przeciwnym wypadku przyjmie wartość 1. Druga postać wywołania funkcji fopen jest następująca: [id_pliku,informacja]=fopen(nazwa_pliku,rodzaj_dostępu) informacjajest łańcuchem znakowym, który może być pomocny w ustaleniu błędu. Jest on zwracany kiedy operacja otwarcia pliku zakończy się niepowodzeniem. Zamknięcie pliku o podanym identyfikatorze: status=fclose(id_pliku) Zamknięcie wszystkich otwartych plików: status=fclose( all ) 7

W otwarytm pliku można wykonywać operacje odczytu lub zapisu za pomocą: fscanf fprint fwrite Przykład x = 0:0.1:1; y = [x; exp(x)]; fid = fopen('exp.txt','w'); fprintf (fid, %f, y); fclose(fid) dlmwrite A=['ala']; >> dlmwrite ('plik.txt', A) -> a,l,a >> dlmwrite ('cos.txt', A, '') -> ala >> save plik.txt' A ascii - Nieprzydatne przy łańcuchach 9.7000000e+001 1.0800000e+002 9.7000000e+001 Czytanie: Zapis (odczyt) łańcuchów do pliku textscan czyta plik tekstowy, zawartość przekazuje do zmiennej typu komórkowego cell dlmread(filename, delimiter, Row, Column) nie wszystkie konieczne. Odczyt danych numerycznych w trybie ASCII Import - export xlsread import danych z arkusza Excela A = xlsread('testdata2.xls', 1, 'A4:B5') % arkusz 1, komórki A4:B5 xlswrite d = {'Time', 'Temp'; 12 98; 13 99; 14 97}; s = xlswrite('tempdata.xls', d, 'Temperatures', 'E1') importdata s = importdata('ding.wav') s =data: [11554x1 double] fs: 22050 imread wczytanie grafiki >> a=imread('niebo.jpg'); >> image(a) % lub imagesc(a) skaluje wykres do pełnej mapy kolorów; Rysunek w oknie wykresów Matlaba imwrite zapis grafiki BW = imread('text.png'); imwrite(bw,'test.tif'); UWAGA: Przed nazwą pliku zawsze moŝe być adres URL 8