Microsoft Word - Cz IV MATLAB_WYKRESY_SORT_NUMER_APROK_SIMUL_GUI.pdf
(
2213 KB
)
Pobierz
Programowanie w Matlabie
Materiaÿy Cz. III
Zagadnienia:
Û
Sortowanie danych w tablicach
Û
Zapis i odczyt danych do pliku dyskowego
Û
Grafika i wykresy w matlabie
Û
Projektowanie GUI
Û
Simulink Ï budowa i badanie modeli
Û
Obliczenia numeryczne.
Aproksymacja w Matlabie
Û
Matlab- wbudowane metody obliczeIJ numerycznych -
przykÿady zastosowaIJ
1
SORTOWANIE DANYCH
Przedstawiono 2 algorytmy sortowania danych zawartych w tablicy (tu A[..].
Algorytm I szuka najwiħkszego z elementw i umieszcza go na koıcu tablicy. Nastħpnie
powtarza czynnoĻę- robiĢc to samo dla tablicy o jeden element krtszej itd. Algorytm II
wielokrotnie przeszukuje tablicħ przestawiajĢc pary sĢsiednich elementw, tak by element
wiħkszy byþ zawsze za mniejszym.
Dla porwnania przedstawiono wyniki tych algorytmw dla
A= [6 3 1 7 8 5]
Algorytmy rŇniĢ siħ iloĻciĢ przestawieı elementw w tablicy.
Sortowanie A[È] metodģ Buble Sort
Indeks
i
pĨtli zstĨpujģcej w
dÿ wyznacza m-ce gdzie w
wektorze A bĨdzie
zapamiĨtany wiĨkszy od A(
i
),
napotkany
j
Ïty element tzn
A(
j
) wyszukiwany drugģ pĨtlģ
od pozycji A(1) do A(i-1).
Po zakoIJczeniu pĨtli
przeszukujģcej
for j=1: i-1
na pozycji A(i) znajdzie siĨ
najwiĨkszy z elementw
A(1) ÈA(i-1).
Dalej proces przebiega
identycznie, ale
przeszukiwana jest coraz
krtsza czĨļĚ tablicy.
===SORTOWANIE A[....] - METODA BUBBLE SORT===
WPROWADZ WEKTOR LICZB W POSTACI A=[....]
A= [6 3 1 7 8 5]
A- TABLICA WEJSCIOWA - NIEPOSORT.:
A= [ 6 3 1 7 8 5 ]
i= 6 j=1 - nastepuje przestawienie liczb.
Nowy A= [ 5 3 1 7 8 6 ]
i= 6 j=4 - nastepuje przestawienie liczb.
Nowy A= [ 5 3 1 6 8 7 ]
i= 6 j=5 - nastepuje przestawienie liczb.
Nowy A= [ 5 3 1 6 7 8 ]
i= 3 j=1 - nastepuje przestawienie liczb.
Nowy A= [ 1 3 5 6 7 8 ] <-- A JUZ POSORTOWANE !-
KONIEC
ILOSC POROWNAN PAR ELEMENTOW: 15
ILOSC PRZESTAWIEN PAR ELEMENTOW: 4
>>
Wyniki
2
Sortowanie tablicy A[È] metodģ przestawiania elementw
sģsiednich
Tu pĨtla zewnĨtrzna wyznacza
iloļĚ przeglģdw tablicy A od jej
poczģtku.
W kaňdym przeglģdzie tablicy A
(wykonywanym w pĨtli
wewnĨtrznej) sprawdzane jest czy
elementy sģsiadujģce sģ
ustawione w kolejnoļci rosnģcej,
jeļli nie to sģ przestawiane.
Kaňde wykonanie pĨtli zewnĨtrznej
powoduje skrcenie o 1 obszaru
przeglģdania w tablicy A przez
pĨtlĨ wewnĨtrznģ
W
SORTOWANIE A[....] - METODA PRZESTAWIANIA ELEM. SASIEDNICH
WPROWADZ WEKTOR LICZB W POSTACI A=[....]
A= [6 3 1 7 8 5]
A- TABLICA WEJSCIOWA - NIEPOSORT.:
A= [ 6 3 1 7 8 5 ]
i= 1 j=1 - nastepuje przestawienie liczb.
Nowy A= [ 3 6 1 7 8 5 ]
i= 1 j=2 - nastepuje przestawienie liczb.
Nowy A= [ 3 1 6 7 8 5 ]
i= 1 j=5 - nastepuje przestawienie liczb.
Nowy A= [ 3 1 6 7 5 8 ]
i= 2 j=1 - nastepuje przestawienie liczb.
Nowy A= [ 1 3 6 7 5 8 ]
i= 2 j=4 - nastepuje przestawienie liczb.
Nowy A= [ 1 3 6 5 7 8 ]
i= 3 j=3 - nastepuje przestawienie liczb.
Nowy A= [ 1 3 5 6 7 8 ] <-- A JUZ POSORTOWANE !- KONIEC
ILOSC POROWNAN PAR ELEMENTOW: 15
ILOSC PRZESTAWIEN PAR ELEMENTOW: 6
>>
3
ZAPIS I ODCZYT DANYCH DO PLIKU DYSKOWEGO
W wielu praktycznych zastosowaniach istnieje koniecznoĻę trwaþej rejestracji uzyskanych
wynikw. Wwczas zamiast wyĻwietlaę je w oknie Command moŇna zapisaę je do pliku.
Podobnie jest z wprowadzaniem danych. Wprowadzanie moŇe byę realizowane z
klawiatury jeĻli iloĻę danych jest niewielka. JeĻli jest ich duŇo, to wygodniej jest zapisaę je
wczeĻniej do pliku, co powoduje, Ňe nie trzeba kaŇdorazowo ich wpisywaę uruchamiajĢc
program.
Przedstawiony dalej programu wykonuje operacje:
1) Oblicza wektor x zaczynajģc od Ï180 stop, co 5 stop. Aň do 180 stop,
2) Zamienia wartoļci x na wartoļci w radianach i zapisuje w wektorze Xrad;
3) Oblicza wektor wartoļci funkcji
sin(
5
*
Xrad
Y
(
Xrad
)
=
5
*
Xrad
1) Prosi o podanie nazwy pliku dyskowego i zapamiĨtuje jģ w zmiennej tekstowej
Nazwa, a nastĨpnie otwiera do zapisu plik o podanej nazwie (jeļli go nie ma to
zostanie utworzony). Do otwarcia pliku wykorzystywana jest instrukcja:
P=fopen(Nazwa,
'w'
)
Jeļli plik zostaÿ poprawnie otwarty do zapisu, to przyporzģdkowany jest mu
identyfikator P>0 i nastĨpuje zapis do pliku wektorw Xrad i Y
Zapis realizuje polecenie:
fprintf(P,
'%4.3f %4.3f\n'
, Xrad,Y);
4) Zamyka zbir instrukcjģ
fclose(P)
fopen( )- otwiera zbir do
zapisu lub do odczytu
fprintf()- pozwala na zapis
danych z wektora (lub z
wektorw) do otwartego pliku.
fclose() Î zamyka wskazany
plik,
fscanf()- odczytuje dane z
pliku i umieszcza je w
wektorze o podanej nazwie.
Podaj nazwĨ zbioru do zapisu: Wykres1
Podaj nazwĨ zbioru do odczytu: Wykres1
Z =
-3.1410
-3.0530
-2.9660
ÈÈ..
4
Nastħpnie, aby pokazaę jak wyglĢda obliczona funkcja o ktrej dane zostaþy
zarejestrowane, w oknie figure(1) wykonany jest jej wykres poleceniem plot(Xrad,Y).
Odczyt danych z pliku jest realizowany nastĨpujģco:
1) Program prosi o podanie nazwy pliku do odczytu i zapamiĨtuje jģ w zmiennej
tekstowej NazPliku realizuje to instrukcjģ:
NazPliku=input(
'Podaj nazwĨ zbioru do odczytu: '
,
's'
);
NastĨpnie otwiera plik instrukcjģ:
P1=fopen(NazPliku,
'r'
);
2) Jeļli plik o podanej nazwie nie istnieje w bieňģcym katalogu to zmienna P1
bĨdzie miaÿa wartoļĚ Ï1 i odczyt nie bĨdzie moňliwy- co zostanie
zasygnalizowane komunikatem.
3) Odczyt danych jest realizowany do wektora kolumnowego Z przez instrukcjĨ:
Z=fscanf(P1,
'%f %f'
)
Odczytany wektor Z jest wektorem kolumnowym- wymaga wiħc rozpakowania (tu do
macierzy T) tzn. zrobienia z wektora kolumnowego macierzy T o dwu kolumnach i o liczbie
wierszy o poþowħ mniejszej. Wtedy pierwotnie zapisane wartoĻci Xrad zostanĢ poprawnie
wstawione do pierwszej kolumny macierzy T, a pierwotnie obliczone wartoĻci Y zostanĢ
wstawione do drugiej kolumny macierzy T. Operacjħ zmiany ksztaþtu wykonuje funkcja
reshape(È),
ktrej struktura jest nastħpujĢca:
Mac = reshape(NazWekt, il_wierszy_Mac, il_kolumn_Mac)
Funkcja reshape() ma w programie (wiersz 26) postaę:
T=reshape(Z, floor(length(Z)/2), 2)
Z =
-3.1410
-3.0530
-2.9660
ÈÈ..
2.9680
3.0550
3.1430
0
0.0280
0.0520
ÈÈ..
Rys . Konwersja wektora kolumnowego na
macierz przy wykorzystaniu funkcji reshape()
T=
-3.1410
-3.0530
-2.9660
ÈÈ..
2.9680
3.0550
3.1430
0
0.0280
0.0520
È..
0.0510
0.0270
0
0.0510
0.0270
0
Aby wykonaĚ wykres dla odczytanych danych naleňy napisaĚ:
figure(2);
plot(T(:,1),T(:,2),'r');
Uňyty powyňej zapis np.
T(:,1)
oznacza, ňe chodzi o elementy ze wszystkich
wierszy pierwszej kolumny.
5
Plik z chomika:
ssele
Inne pliki z tego folderu:
Matlab 5.x Simulink 2.x - B.Mrozek, Z.Mrozek.pdf
(27298 KB)
Microsoft Word - Cz IV MATLAB_WYKRESY_SORT_NUMER_APROK_SIMUL_GUI.pdf
(2213 KB)
Microsoft Word - Cz III MATLAB_PROGRAMOWANIE PRZYKL_PROGRAMOw.pdf
(2199 KB)
Microsoft Word - Cz II Matlab_Srodowisko_Praca_ konsolowa Wekt i macierze.pdf
(929 KB)
Microsoft Word - Cz I CWICZ RACH Z MTP1_Materialy Pomoc- Stud.pdf
(857 KB)
Inne foldery tego chomika:
Fizyka
Obwody i sygnały
Zgłoś jeśli
naruszono regulamin