• Nie Znaleziono Wyników

% aa = [1 2 3]; % aa = [1 2 3] % aa = [1 … 2 3] % aa = [10:%-2:0]

N/A
N/A
Protected

Academic year: 2021

Share "% aa = [1 2 3]; % aa = [1 2 3] % aa = [1 … 2 3] % aa = [10:%-2:0]"

Copied!
1
0
0

Pełen tekst

(1)

%

aa = [1 2 3];

%

aa = [1 2 3]

%

aa = [1 … 2 3]

%

aa = [10:%-2:0]

Zadanie. Stwórz wektor o wartościach 1, 0.9, 0.8 … -0.9

%obracanie wektora lub macierzy

aa = [1:3 ; 11:13]; % znak „ ; ” mówi złączeniu elementów „w pionie”

(albo po prostu przejściu do następnego wiersza).

aa' % transponowanie

Zadanie. Stwórz macierz o zawartości:

1 2.1

4 2.0

..

40 0.8

%operacje „z kropką” na macierzach

aa .* 10 %tzw. operatory z kropką i skalarem, czyli na każdym elemencie będzie dokonywana operacja oddzielnie.

aa ./ [1 2 10]

aa + [10 ; 100] % wektor po prawej stronie jest transponowany, operacje będą wykonywane „kolumna po kolumnie”.

aa .^ 0.5 %wszystkie elementy podnieś do potęgi 0.5

Zadanie. W poniższej macierzy pomnóż wiersze kolejno przez 1, 100, 10 za pomocą jednego polecenia.

Macierz wejściowa: Wynik:

1 2 3

4 5 6

7 8 9

1 2 3

400 500 600

70 80 90

Zadanie. W poniższej macierzy pomnóż kolumny kolejno przez 1, 0.1, 10 za pomocą jednego polecenia.

Macierz wejściowa: Wynik:

(2)

1 2 3

4 5 6

7 8 9

1 0.2 30

4 0.5 60

7 0.8 90

%logiczne operacje na macierzach aa > 1 & aa ~= 11

Zadanie. Stwórz wektor o wartościach 11, 12 .. 20 i wskaż czy kolejne elementy w tym wektorze są jednocześnie większe niż 15 i mniejsze lub równe 18. Wynik powinien wynosić 0, 0, 0, 0, 0, 1, 1, 1, 0, 0.

%mnożenie

aa * [1 10 100]' %podczas mnożenie wektorów lub macierzy za pomocą operatora „*” następuje zwyczajne mnożenie macierzowe (tzw. „wiersze przez kolumny”).

Zadanie. Sprawdź wynik mnożenia poniżej macierzy prze poniższy wektor transponowany („pionowy”)

Macierz

1 2.1

3 2.2

..

41 6.1

wektor transponowany 1

1000

%odwracanie macierzy [1 2;3 4]^-1

Zadanie. Za pomocą odwracania macierzy wylicz wartość układu równań

3⋅x1+1⋅x2=31;−x1+x2=−9

, czyli [

xx12

]

=

[

−1 13 1

]

−1

[

319

] , powinno wyjść

x1=10 ; x2=1

.

%indeksowanie elementów macierzy 2d

%pierwszy element ma numer 1, a ostatni „end”

aa(:, 2:end-1) % wszystkie wiersze ( : ), kolumny od drugiej do przedostatniej

Zadanie. Dla poniższej macierzy pokaż wartości wszystkich kolumn

zaczynając, a wierszas zaczynając od przedostatniego i kończąc na

(3)

pierwszym

Macierz wejściowa: Wynik:

1 2 3

4 5 6

7 8 9

4 5 6

1 2 3

%indeksowanie macierzy pojedynczym wektorem

aa(1:4) %w przypadku macierzy i indeksowania wektorem elementy są liczone kolumnami, odradza się jawne indeksowanie w ten sposób.

aa(aa > 10)

find(aa > 10) %indeksy elementów niezerowych bb=aa; bb(aa>10) = 9; bb

Zadanie. W poniższej macierzy powiększ wartości pomiędzy 2 i 5 o 10.

Macierz wejściowa: Wynik:

1 2 3

4 5 6

7 8 9

1 2 13

14 5 6

7 8 9

% wybrane operacje "agregacji" na macierzach aa = [1:3;11:13]

min(aa) %wyszukanie minimalnej wartosci dla kazdej kolumny [~, i] = min(aa) %pobierz DRUGI parametr funkcji min, czyli index minimalnego elementu

max(aa) %

mean(aa, 2) %wyszukanie sredniej w kazdym wierszu

sum(aa, 1) %wyliczenie sumy elementow w kazdej kolumnie sum(aa)

Zadanie. Proszę stworzyć macierz widoczną poniżej, następnie w każdej kolumnie osobno pomniejszyć wartości o średnią wartość w tej kolumnie.

Macierz wejściowa: Wynik:

1 2 3

4 5 4

7 8 5

-3 -3 -1

0 0 0

3 3 1

(4)

size(aa, 1) %rozmiar "pierwszego wymiaru"

length([10:0.1:30]) %dlugosc wektora

%inne operacje doc clear

clear bb; %kasowanie zmiennej (dosc wolna operacja) clear ; % kasowanie wszystkich zmiennych

rand(2, 3); %macierz 2x3 z wartosciami losowymi z przedzialu (0; 1) sort(rand(1,10) );

randperm(5); %losowa permutacja liczb 1:n, na przykład 2, 3, 5, 1, 4 Zadanie. Stwórz ręcznie macierz widoczną poniżej, następnie pobierz wielkość macierzy poniżej, następnie stwórz macierz o tej samej wartości wypełnioną wartościami losowymi z przedziału [-1;+1].

Macierz wejściowa: Przykładowy wynik:

1 2 3

4 5 4

-0.393 0.421 0.831 0.315 -0.790 -0.013

%petle

aa = [1:3;11:13]; bb = 1; cc = 0;

while (bb <= size(aa, 2)) tmp = cc + aa(1, bb);

cc = tmp;

bb = bb + 1;

end;

tmp % zmienna nie jest usuwana po wyjsciu z petli cc

bb

clear bb cc;

%petla for

aa = [1:3;11:13]; suma = 0;

for i = 1:size(aa, 2) suma = suma + aa(1, i);

end;

suma

clear suma i

%pętla for, do zmiennej wyznaczonej (tutaj i) bedzie w kolejnych

(5)

iteracjach podstawiac kolejne kolumny a nie wartosci.

%Szczegoly widoczne sa w przykladach ponizej

mac = [1 2 3; 4 5 6]; wek_pion = [11 12 13]’; wek_poz = [11 12 13];

for i = mac

i %petla wykona się 3 razy, zmienna i bedzie zawierala w kolejnych iteracjach pionowe wektory [1; 4], [2; 5], [3; 6]

end;

for i = wek_pion

i %petla wykona się 1 raz, zmienna i bedzie zawierala pionowy wektor [11; 12; 13]

end;

for i = wek_poz

i %petla wykona się 3 razy, zmienna i bedzie zawierala w kolejnych iteracjach wartosci 11, 12, 13

end;

Zadanie. Proszę stworzyć macierz o rozmiarze 4x3 wypełnioną losowymi wartościami całkowitymi z przedziału [0; 5], a następnie proszę za pomocą podwójnej pętli przeiterować każdy wiersz osobno od strony lewej po prawą i sprawić, by kolumny od drugiej do ostatniej były powiększone o wartość po ich lewej stronie (suma z kumulacją). Przydatne funkcje to rand, round, ceil, floor. Na przykład:

Macierz 4x3 wypełniona

początkowymi losowymi wartościami: Macierz po dokonaniu obróbki:

1 3 1 3 0 2 2 2 3 0 1 2

1 4 5 3 3 5 2 4 7 0 1 3

%blok warunkowy for i=1:9

if i <= 3 i

elseif (i <= 7) i+10

else i+100 end;

end; clear i

(6)

Zadanie. Proszę stworzyć macierz o rozmiarze 3x4 wypełnioną losowymi wartościami całkowitymi z przedziału [0; 5], a następnie proszę za pomocą podwójnej pętli i polecenia if wyzerować wartości większe niż 3. Na

przykład:

Macierz 3x4 wypełniona

początkowymi losowymi wartościami: Macierz po dokonaniu obróbki:

2 3 0 0 4 3 4 1 4 2 3 1

2 3 0 0 0 3 0 1 0 2 3 1

%dynamiczna zmiana rozmiaru macierzy (bardzo wolna metoda) bb = [];

bb = [bb 1:3]

bb(10) = 10;

bb(end+1) = 11; %dodanie wartosci bb = [bb; 101:111]

bb = 1:10;

bb(bb > 3 & bb < 8) = []; %nietypowy sposób usuwania elementów bb = {} %zmienna typu ‘komorkowego’

bb{1} = 1; bb{2} = [1:4]; bb{3}='napis';

%kazdy element jest innej wielkosci i typu

%

bb{2}(3)

%wykresy plot(-10:10) plot(-10:10, '.-r')

plot(-10:10, [101:121], ':k', 'linewidth', 10)

xlabel('wymiar x'); ylabel('wym y'); title('tytul');

xlabel('\alpha_{\Gamma}^{123}','Interpreter','Tex');

clf; %czyszczenie wykresu hold on;

plot(1:11, ':r'); plot(3:13, '--b'); plot(5:15, 'sk');

hold off;

legend('a1','b2', 'c3');

doc plot

(7)

xlim([0 10]); ylim([-10 10]); %ograniczeni zakresu wyswietlania wykresu

%wykresy 3d

mac = [1 2 3; 3 2 1; 2 2 2];

mesh(mac) meshc(mac) surf(mac)

Zadanie. Proszę wyświetlić na jednym wykresie funkcje: abs(sin(x)) i atan(x) dla x mieszczącego się w przedziale (-pi; pi). Należy odpowiednio opisać osie OX i OY oraz dodać opis (legendę) dla obu funkcji oraz tytuł dla całego wykresu.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%

% odczyt obrazka

img_uint8 = imread('rzeczka.jpg'); %dane formatu uint8 – bardzo kiepsko

(8)

obsługiwanego przez Matlaba/Octave

% wyświetlenie obrazka imshow(img_uint8);

% zapis obrazka

imwrite(img_uint8, ‘wynik.png’);

% proszę popatrzeć na typ danych img_uint8(3:4, end-3:end, :)

% konwersja na wygodny dla Matlaba/Octave typ danych img_dbl = double(img_uint8);

img_uint8 = uint8(img_dbl); %konwersja w drugą stronę

img_dbl(3:4, end-3:end, :) % proszę popatrzeć na typ danych

%wyświetlanie obrazów dla typu danych double

imshow(img_dbl); % błąd, Octave przyjmuje dla typu double użyteczny zakres wartości [0; 1] zamiast [0; 255]

imshow(img_dbl/255); %poprawnie

%zmiana zawartości pojedynczego piksela

img_dbl(end, 1, 1) = 0; img_dbl(end, 1, 2) = 255; img_dbl(end, 1, 3) = 0;

%zmiana koloru piksela w lewym dolnym rogu na zielony

%podział wykresu na kilka części

clf; % wyczyszczenie i przygotowanie miejsca na wykres

subplot(2, 2, 1); % podział wykresu na 2x2 części, skupienie się na pierwszej ćwiartce

imshow(img_dbl(:, :, 1)/255); % wyświetlenie czerwonej składowej obrazka

subplot(2, 2, 2);

imshow(img_dbl(:, :, 2)/255); % wyświetlenie zielonej składowej obrazka subplot(2, 2, 3);

imshow(img_dbl(:, :, 3)/255);% wyświetlenie niebieskiej składowej obrazka

Zadania. związane z obróbką poniższego obrazu do wykonania

(9)

1. Proszę stworzyć macierz zawierającą obrazek „rzeczka.jpg”, następnie zmienić kolor kolumn pikseli od 10 do 50 na żółte, później wyświetlić tak powstały obrazek.

2. Proszę stworzyć macierz zawierającą po lewej stronie obrazek

„rzeczka.jpg”, a po prawej jego lustrzane odbicie. Proszę nie używać subplot i flip.

3. Proszę stworzyć negatyw obrazka „rzeczka”, powinien on wyglądać tak, jak poniżej. Negatyw polega na zamianie wartości 0,1..255 na 255,254..0.

Figure 1: rzeczka.jpg

(10)

Cytaty

Powiązane dokumenty

Król Artur urządza turniej rycerski, w którym rycerze spotykają się (jakże by inaczej?) systemem turniejowym. W każdym pojedynku obaj rycerze mają takie same szanse na

N. rozkłada na stoliku duży arkusz papieru i rysuje na nim rodzinę: mamę, tatę, dwoje dzieci – chłopca i dziewczynkę. Prosi kolejne dzieci, aby powiedziały, z czym im się

6–57: Liczby różnorodności porostów (LDV) taksonów referencyjnych i wskaźników eutrofizacji oraz suma częstości występowania taksonów na wybranych forofitach

The high-frequency electronic ballast output stage as a resonance half-bridge class-D converter is analyzed. A stage mathematical model as dependence of voltages and currents in

• Postaraj się rozwiązać wszystkie zadania, chociaż do zaliczenia pracy wystarczy kilka punktów.. • Zadanie wykonaj w

Przyjrzyj się uważnie kulom śniegowym, a następnie uporządkuj od najmniejszej do największej wpisując w okienka odpowiednie cyfry rozpoczynając

W wyniku realizacji projektu „Rozwój proekologicznego transportu publiczne- go na Obszarze Metropolitalnym Trójmiasta&#34; ulegnie znaczącej poprawie układ za- silania

Działania promocyjne, czyli słowa i obrazy, mają moc kreowania rzeczywistości (Austin 1993), ale ich siła tworzenia czegoś z niczego ma swoje granice. Za promocją