Ale nie takie działania jak nas uczono na I roku studiów, tylko takie dziwniejsze...

W MATLABie wszystko tak naprawdę jest macierzą. Nawet pojedyncza liczba jest traktowana jako macierz o wymiarach 1x1. Macierze, które mają więcej niż jeden element tworzymy poprzez podanie ich elementów w nawiasach kwadratowych [] - i nie wolno do tego używać innego typu nawiasów! Wartości w kolumnach oddzielone są spacjami, wiersze oddzielone są średnikami.



Zadanie (2)

Przed wykonaniem tego ćwiczenia wpisz:

>> clear
>>
clc


aby wyczyścić wartości wszystkich zmiennych oraz ekran. Następnie wpisz komendy, naciskając każdorazowo ENTER:

>> A = [1 7; 3 8 ; 5 6]
>> B = [19 21 44]                     
% macierz o jednym wierszu i trzech kolumnach
>> C = [14;15;16]                      % trójelementowy wektor
>> D = [12 11 10; 9 8]



Dlaczego próba wpisania ostatniej macierzy wywołała błąd?

Zdefiniuj zmienną A o zawartości podanej poniżej, następnie wypróbuj dane zapytania i określ, co one robią.



11  12  13  14

21  22  23  24

31  32  33  34

41  42  43  44

>> A
>> A(:,3)
>> A(2,:)
>> A(1,2)                                    
% najpierw podajemy numer wiersza, czy kolumny?
>> A(1:3,3:4)
>> A(:)
>> A(:,:)
>> [A A]
>> [A ; A]
>> A(:,1) =[ ]                             
% to działanie wykonaj klika razy pod rząd


Używając strzałek przewiń listę komend do polecenia, w którym macierz
A została utworzona i wywołaj ponownie to polecenie. Polecenie to możesz też znaleźć w oknie Command History. Następnie wpisz:

>> A(2,:)=[-1 -2 -3 -4]

Działań na macierzach jest bardzo dużo i powinieneś je wszystkie (nie)stety pamiętać. Ewentualnie, musisz pamiętać gdzie je znaleźć :) W zasadzie, działania te zapamiętają się same - o ile będziesz je dostatecznie często stosować. Do najważniejszych działań należą:



(1) Zakresy liczb dla macierzy C:

  • C(i,j) - wydobywanie elementu macierzy znajdującego się w i‐tym wierszu i j‐tej kolumnie,

  • C(a:b,c:d) - wydobywanie podmacierzy,podaje się wpierw zakres wierszy (od a-tego do b-tego wiersza) a potem kolumn (od c-tej do d-tej kolumny),

  • C(i,:) - wydobywanie i-tego wiersza,

  • C(:,j) - wydobywanie j-tej kolumny,

  • mając macierze C i D o właściwych wymiarach, można je połączyć po prostu dodając kolumny:

    [C D] lub wiersze: [C;D],

  • polecenie C(:) zamienia macierz na wektor,

  • dwukropek jest bardzo przydatnym operatorem oznaczającym „od… do…”.

  • m:n to zakres liczb m,m+1,m+2,...n (przy założeniu: m<n)

  • m:s:n to zakres liczb od m do n z krokiem s, np.: 1:3:10 zwróci liczby: 1, 4, 7, 10,

  • C=[] - utworzenie macierzy pustej lub wyzerowanie macierzy,

  • C(i,:)=[] - usunięcie i‐tego wiersza,

  • C(:,j)=[] - usunięcie j‐tej kolumny.

(2) Działania liczbowe na macierzach:

  • C*D – mnożenie dwóch macierzy (o ile ich wymiary są odpowiednie),

  • C.*D – mnożenie ze sobą elementów macierzy kwadratowych o tych samych rozmiarach element po elemencie (tak jak to czasem na początku mnożą studenci: to z tym, to z tym, to z tym...)

  • C^n – mnożenie macierzy samą przez siebie n razy: C*C*...*C,

  • C.^n – podnoszenie każdego elementu macierzy do n-tej potęgi,

  • C' – uzyskanie macierzy transponowanej,

  • C+3*D – dodawanie macierzy, mnożenie przez liczbę.

(3) Inne operacje macierzowe:

  • tril(C) – tworzenie macierzy dolnotrójkątnej,

  • triu(C) – tworzenie macierzy górnotrójkątnej,

  • sum(C) – suma elementów w kolumnach,

  • sum(C,2) - suma elementów w wierszach,

  • mean(C) – średnia elementów w kolumnach,

  • mean(C,2) – średnia elementów w wierszach. % podobnie działają polecenia max i min

Zadanie (3)

Wypróbuj zapytania:

>> A = [1 2 3; 4 5 6; 7 8 9];
>>
A-5                                             
% brzydki zapis, no ale trudno...
>> B = [9 8 7; 1 2 3];
>>
B*A
>>
A*B
>>
A.*B                                           
% czy da się? I dlaczego nie?
>> A*A
>>
A^2
>>
A.^2

>> B'
>>
B(3,:)=[4 5 6]
>>
A+2*B
>>
max(A)
>>
max(max(A))

 

Zadanie (4)

Wyczyść ekran oraz listę zmiennych i wypróbuj działanie następujących komend, tworzących tzw. macierze specjalne:



>> A=magic(4)             % kwadrat magiczny o wymiarach 4x4 (sumy wyrazów w wierszach,
                                 
% kolumnach i na obu przekątnych są równe)
>> B=eye(4)                  % macierz jednostkowa o wymiarach 4x4
>> C=ones(4,5)             % macierz złożona z samych jedynek o wymiarach 4x5
>> D=zeros(size(C))    % macierz złożona z samych zer, ma mieć takie same wymiary jak C
>> E=diag([1,34,exp(1),pi])              % macierz przekątniowa
>> F=[A C;B D]               % macierz złożona z macierzy A, C, B i D
>> length(F)                   % największy z wymiarów macierzy
>> size(F)                        % wymiary macierzy
>> ndims(F)                    % liczba wymiarów macierzy
>> numel(F)                    % liczba elementów macierzy
>> V=primes(50)           % wektor zawierający liczby pierwsze nie większe niż 50
>> V(end)                       % end oznacza ostatni element wektora

 

Zadanie (5)

Przetestuj następujące komendy:



>> A=[1,2,3;4,5,6]
>> B=[1,4,3;15,18,5]
>> A==B
                                % porównanie element po elemencie
>> A>B                                  % które elementy są większe w A niż w B
>> A>=B
>> A~=B                                       
% znalezienie elementów różnych w macierzach
>> mod(B,2)==1                    % gdzie w B są liczby nieparzyste?
>> mod(B,2)==0                    % gdzie w B są liczby parzyste?
>> mod(B,2)==0 & B>10           % gdzie w B są liczby parzyste oraz większe od 10?
>> mod(B,2)==0 | B>10         % gdzie w B są liczby parzyste lub większe od 10?

 

Ostatnia modyfikacja: poniedziałek, 1.07.2013, 10:31 AM