Matlab - wprowadzenie

 

Podstawowe operacje na macierzach

Wprowadzanie macierzy

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Transpozycja macierzy

A'

Dodawanie macierzy

A + A' (wynik - macierz symentryczna)

Mnożenie macierzy

A * A

Operacje tablicowe na macierzach (element po elemencie)

B = A + 5
A \ 34
A .* A

Sumowanie kolumn macierzy

sum(A)

Sumowanie wierszy

sum(A')'

Sumowanie elementów leżących na przekątnej

sum(diag(A))

Indeksowanie elementów

A(1,4) + A(2,4)

A(8) znaczy to samo, co A(4,2)

Automatyczne rozszerzanie macierzy

X = A; X(4,5) = 17

Tworzenie macierzy zawierającej same zera, jedynki lub liczby losowe z pewnego zakresu

Z = zeros(2,4)
F = 5*ones(3,3)
N = fix(10*rand(1,10))

Konkatenacja macierzy

B = [A A+32; A+48 A+16]

Obliczanie wyznacznika macierzy

d = det(B)

Odwracanie macierzy

inv(B) * B

 

Operator ':'

 

Uzyskiwanie wektorów liczb z pewnego zakresu

1:10
100:-7:50
0:pi/4:pi

Odwołanie do fragmentu macierzy

sum(A(1:4,4))

Dwukropek oznacza wszystkie elementy kolumny lub wiersza; słowo kluczowe end oznacza ostatnią kolumnę lub wiersz

sum(A(:,end))

Wektoryzacja operacji wymagającej pętli w innych językach

sum(1:16)/4

Operacja ,,dla każdego wiersza macierzy A zmień kolejność jego elementów"

[1 3 2 4]'
B = A(:,[1 3 2 4])

Zmiana wartości niektórych elementów macierzy

B(1:2,2:3) = 0

Usuwanie kolumny macierzy

X(:,2) = []

Usuwanie z macierzy elementów o wybranych indeksach

X(2:2:10) = []

Budowanie tablic

n = (0:9)';

pows = [n n.^2 2.^n]

(Podstawowe funkcje działają na tablicach element po elemencie.)

format short g
x = (1:0.1:2)'
logs = [x log10(x)]

 

Wykresy

 

Wykres słupkowy

bar(A(1,:))

Wykres funkcji y = sin(t)

t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)

Wykresy wielokrotne

y2 = sin(t-.25);
y3 = sin(t-.5);
plot(t,y,t,y2,t,y3)

Wykres funkcji dwóch zmiennych (eps - precyzja zmiennoprzecinkowa)

[X,Y] = meshgrid(-8:0.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)

 

Pomoc

 

Uzyskanie informacji o zdefiniowanych zmiennych

who
whos

Uzyskanie spisu dostępnych kategorii funkcji

help

Uzyskanie listy funkcji należących do danej kategorii

help matfun

Uzyskanie opisu wybranej funkcji, np.

help magic

Przeszukiwanie pomocy przy użyciu słowa kluczowego

lookfor inverse

 

Skrypty, funkcje, instrukcje sterujące

 

Skrypt magicrank.m do badania rzędu kwadratów magicznych; instrukcja for

% Badanie rzedu kwadratow magicznych
r = zeros(1,32);
for n = 3:32
  r(n) = rank(magic(n));
end
r
bar(r)

Funkcja num2bin.m zwraca liczbę w systemie binarnym

% bin - wektor zerojedynkowy
% num - liczba calkowita
% dlugosc - liczba elementow wektora
function [bin] = num2bin(num,dlugosc)
if nargin==1
  if num==0
    dlugosc = 1;
  else
    dlugosc = 1+floor(log2(num+.1));
  end
end
potegi2 = 2.^[0:dlugosc-1];
aa = bitand(num,potegi2)>0;
bin = fliplr(aa);

 

 Przykładowe zadania na sprawdzian

  1. Utwórz macierz M o dowolnym zadanym rozmiarze N, bez użycia instrukcji pętli, najlepiej w jednym poleceniu. Na przykład dla N=4
  2. Wygeneruj macierz bez użycia instrukcji pętli:

  3. Napisz program (najlepiej z jednym poleceniem) zamieniający wektor reprezentujący liczbę w systemie dwójkowym na liczbę w systemie dziesiętnym bez użycia instrukcji pętli. Przykłady:


     
  4. Wyznacz wektor liczb pierwszych dla N pierwszych liczb naturalnych bez instrukcji pętli oraz funkcji isprime().
  5. Wyznacz wektor pierwiastków dowolnego wielomianu podanego w postaci ciągu współczynników, np. c = [1 -8 17 -10] oznacza wielomian x^3 -8x^2 + 17x -10 bez uzycia instrukcji pętli oraz funkcji roots()

    Odpowiedzi