Zaprezentowano koncepcję badania sygnałów akustycznych stanów przedawaryjnych silnika synchronicznego



Pobieranie 87,88 Kb.
Data29.01.2018
Rozmiar87,88 Kb.


Podstawy Informatyki


Laboratorium 4

1. Cel ćwiczenia

Celem ćwiczenia jest zapoznanie się z elementami programowania wysokopoziomowego, a w szczególności operacjami logicznymi języka MATLAB.


2. Wprowadzenie
2.1. Relacje i wyrażenia logiczne
2.1.1. Operatory porównania

Języki wysokiego poziomu zazwyczaj posiadają specjalny typ przechowujący wartości typu logicznego (prawda lub fałsz). Język MATLAB nie posiada typu logicznego. W języku MATLAB, logicznej prawdzie odpowiada macierz o wszystkich elementach niezerowych, logicznemu fałszowi — macierz pusta lub zawierająca co najmniej jedno zero. Wyrażeń logicznych używa się w instrukcjach sterujących oraz przy przetwarzaniu macierzy. Operatory porównania zestawione w tab. 1 umożliwiają konstrukcje wyrażeń logicznych.


Tab. 1. Operatory porównania w języku MATLAB


Wyrażenie

Relacja

Op1 == Op2

Op1 równe Op2

Op1 ~= Op2

Op1 różne Op2

Op1 < Op2

Op1 mniejsze niż Op2

Op1 > Op2

Op1 większe niż Op2

Op1 <= Op2

Op1 mniejsze lub równe Op2

Op1 >= Op2

Op1 większe lub równe Op2

Operatory porównania (relacyjne) badają czy pomiędzy operandami będącymi elementami macierzy zachodzą określone relacje. Jeśli relacja jest spełniona Operatory porównania należy stosować ostrożnie. Reprezentacja zmiennoprzecinkowa jest obarczona niedokładnością. Z tego powodu, nawet przy niewielkiej różnicy pomiędzy wartością spodziewaną a wartością otrzymaną, może dojść do sytuacji nieprzewidzianych (np. pętla nieskończona).


2.1.2. Operatory logiczne

W języku MATLAB istnieją trzy rodzaje operatorów logicznych: operujące na elementach macierzy, będących operandami (operandami są macierze), warunkowe operatory logiczne (ang. short-circuit) — operujące na skalarnych wyrażeniach logicznych i operatory bitowe — operujące na poszczególnych bitach macierzy lub wartości całkowitych. Operatory logiczne pierwszego rodzaju zestawiono w tab. 2.

Tab. 2. Operatory logiczne operujące na elementach macierzy


Operator

Funkcja logiczna

Op1 | Op2

Alternatywa

Op1 & Op2

Koniunkcja

xor(Op1,Op2)

Różnica symetryczna

~Op1

Negacja

Warunkowe operatory logiczne (ang. short-circuit) służą do wykonywania operacji na skalarnych wyrażeniach logicznych. Umożliwiają one podjęcie decyzji o wartości wyrażenia na podstawie analizy jedynie pierwszego operandu (jeśli jest to możliwe) — jeżeli nie trzeba nie jest brany pod uwagę drugi operand. Kluczową różnicą pomiędzy operatorami operującymi na elementach macierzy i operatorami typu short-circuit jest to, że w przypadku tych pierwszych, jako operandy muszą wystąpić macierze (lub wektory) a w przypadku drugich — wartości skalarne. Operatory typu short-circuit zestawiono w tab. 3.


Tab. 3. Operatory typu short-circuit w języku MATLAB


Operator

Opis

Op1 && Op2


Zwraca logiczną prawdę (1), jeżeli oba operandy mają wartość logicznej prawdy (1). Zwraca logiczny fałsz (0), jeżeli którykolwiek z operandów ma wartość logicznego fałszu (0).

Op1 || Op2

Zwraca logiczną prawdę (1), jeżeli jeden lub oba operandy mają wartość logicznej prawdy (1). Zwraca logiczny fałsz (0), jeżeli oba operandy mają wartość logicznego fałszu (0)

Logiczne operatory bitowe zebrano w tab. 4. Jako argumentów wymagają one nieujemnych liczb całkowitych. W przykładach zamieszczonych w tab. 4 przyjęto następujące wartości skalarne: A = 28, bitowo: 11100, B = 21, bitowo: 10101.


Tab. 4. Logiczne operatory bitowe języka MATLAB


Funkcja__Działanie'>Funkcja

Opis

Przykład

bitand(A,B)

Alternatywa bitowa

bitand(A,B) = 20 (binary 10100)

bitor(A,B)

Koniunkcja bitowa

bitor(A,B) = 29 (binary 11101)

bitcmp(A,B)

Uzupełnienie n-bitowe

bitcmp(A,5) = 3 (binary 00011)

bitxor(A,B)

Bitowa różnica symetryczna

bitxor(A,B) = 9 (binary 01001)


2.1.3. Funkcje logiczne

Korzystając z funkcji logicznych można w wygodny sposób badać właściwości macierzy lub ich elementów. Nie chodzi tu o właściwości w sensie algebraicznym. Funkcje logiczne można podzielić na dwie grupy: do badania własności macierzy jako całości (tab. 5) oraz do badania własności elementów macierzy (tab. 6).


Tab. 5. Funkcje logiczne do badania własności całych macierzy




Funkcja

Działanie

exist(’nazwa’)


Zwraca 1 (prawda), jeżeli macierz o podanej w apostrofach nazwie istnieje, w przeciwnym razie zwraca fałsz (0)

isempty(x)

Przyjmuje 1, jeśli x jest macierzą pustą, w przeciwnym razie 0

issparse(x)

Zwraca 1, jeśli x jest macierzą rzadką, w przeciwnym przypadku 0

isstr(x)

Zwraca 1, jeśli x jest łańcuchem tekstowym, w przeciwnym przypadku 0

isglobal(x)


Zwraca 1, jeśli x jest zmienną globalną (macierzą lub łańcuchem), w przeciwnym przypadku 0

Tab. 6. Funkcje logiczne do badania własności elementów macierzy




Funkcja


Działanie


any(x)


Wektory: 1 –– jeśli którykolwiek element jest niezerowy Macierze: tworzy wektor wierszowy (kolumny są zerami lub jedynkami). Jeżeli w kolumnie występuje przynajmniej jeden element niezerowy –– wartość elementu: 1.

all(x)

Podobnie jak any, 1 — gdy wszystkie elementy są niezerowe

I=find(x)

Zwraca indeksy niezerowych elementów wektora x

[I,J]=find(x)

Zwraca indeksy wierszy i kolumn niezerowych elementów macierzy x

[I,J,V]=find(x)

Analogicznie do powyższego, dodatkowo wektor V zawiera elementy macierzy x

isnan(x)

Zwraca macierz z elementami=1 gdy dany element x nie jest liczbą

isinf(x)

Zwraca macierz z elementami=1 gdy dany element x jest równy +inf lub -inf


3. Program ćwiczenia
1. Przejście do katalogu roboczego dla grupy laboratoryjnej.

(a) Wprowadzić:

>>pwd

Wprogramie MATLAB każde wprowadzone polecenie zatwierdza się klawiszem . Zwrócić uwagę na ścieżkę dostępu do katalogu bieżącego.



(b) Wprowadzić:

>>cd nazwa_podkatalogu

Parametr nazwa_podkatalogu powinien składać się z nazwisk 2 wybranych studentów grupy laboratoryjnej (np. >>cd KowalskiNowak).
2. Użycie operatorów porównania. Dla:

>>x=[1 5 2 8 9 0 1] oraz

>>y=[5 2 2 6 0 0 2], wykonać poniższe komendy i zinterpretować ich wyniki.

(a) >>x>y oraz >>x

(b) >>x==y oraz >>x<=y

(c) >>x>=y oraz >>x|y

(d) >>x&y oraz >>x&(~y)

(e) >>(x>y)|(y>(x>y)&(y

(f) Wyczyścić zawartość okna poleceń programu MATLAB poleceniem: >>clc
3. Zastosowanie indeksowania logicznego. Mając dane wektory: >>x=1:10 i
>>y=[3 1 5 6 8 2 9 4 7 0] wykonać poniższe komendy i zinterpretować ich wyniki:

(a) >>(x>3)&(x<8) oraz >>x(x>5)

(b) >>y(x<=4) oraz >>x((x<2)|(x>=8))

(c) >>y((x<2)|(x>=8)) oraz >>x(y<0)

(d) Wyczyścić zawartość okna poleceń programu MATLAB poleceniem: >>clc
4. Przetwarzanie macierzy. Mając dane >>x=[3 15 9 12 -1 0 -12 9 6 1] napisać polecenia wykonujące poniższe operacje.

(a) Zamiana dodatnich elementów x na zera. Wprowadzić:

>>x(x>0)=0 % x(warunek) wybiera elementy, dla których spełniony jest warunek

(b) Zamiana wartości będących wielokrotnościami 3 na 3 (wykorzystać funkcję rem). Wprowadzić:

>>x(rem(x,3)==0)=3

Wskazówka: do znalezienia indeksów I elementów wektora spełniających określony warunek logiczny służy funkcja find (np. I=find(x<1) znajduje indeksy elementów wektora x mniejszych od 1.

(c) Wyczyścić zawartość okna poleceń programu MATLAB poleceniem: >>clc
5. Wprowadzanie danych z Excela
W pracy zazwyczaj korzystamy z zewnętrznych zbiorów danych. Popatrzmy jak można wczytać dane z plików excela.
num = xlsread('c:\dane\eur.xls');
Matlab wczytuje dane ignorując pierwszy wiersz. Jeżeli chcemy dotrzeć do jakichś konkretnych informacji możemy po prostu wyciąć odpowiednią kolumnę.
close=num(:,4);
Możemy wczytać też tylko jakiś zakres danych
num = xlsread('eur.xls', 'C2:C5')
Zadanie 1
Mając dane >>x=[3 15 9 12 -1 0 -12 9 6 1] napisać polecenia wykonujące poniższe operacje.

(a) Mnożenie elementów x o wartościach parzystych przez 5

(b) Stworzenie wektora y złożonego z wartości x większych od 10

(c) Zamiana wartości x mniejszych od średniej na zera (wykorzystać funkcję mean)


Zadanie 2
Znaleźć wartość maksymalną i podać jej położenie w macierzy

x=rand(7)

Program ma podawać, w którym wierszu i w której kolumnie jest wartość maksymalna. Użyć funkcji max() oraz funkcji find().
Zadanie 3
Dla wektora wierszowego w=[1.1 0.2 0.5 -0.1 0.8 1.2 0.3 2 0.8 0]

-pomnożyć dwoma sposobami przez 2 wszystkie elementy z przedziału (0.2,1.1>


Zadanie 4
Dla macierzy następujących:

A=[1,2,3;4,5,6]

B=[1,3,3;5,5,5]
a)Znajdź elementy różne w obu macierzach.

b)Znajdź elementy większe w macierzy A niż w macierzy B


Zadanie 5
Dla wektora:

A=[1 2 3 0 6 0]


a)Sprawdź czy jest niezerowy element w wektorze?

b)Sprawdź czy wszystkie elementy są niezerowe?


Zadanie 6
Wczytaj dane bez roku urodzenia z katalogu „c:\dane\eur.xls”.

Kolejno sumuj każdą z kolumn i dopisz wiersz zawierający odpowiednie sumy.


1 2 3 4

1 2 3 4


1 2 3 4

1 2 3 4


2 3 4 5

2 3 4 5


2 3 4 5

10 17 24 31


Następnie znajdź wartość w macierzy większą od 10 a mniejszą od 20 i ją wyświetl.

Zadanie 7
Mając dane A=’ola’, B=’ala’

a)Sprawdź czy napisy są takie same używając operatora „==”

b)Kolejno sprawdzić czy A zawiera słowo ‘dom’ używając operatora „==”

c) Sprawdzić czy A>B ? Sprawdzić czy B>A? Dlaczego wynik jest inny?


Zadanie 8
Za pomocą jednego polecenia wygenerować wektor 20-elementowy, którego współrzędne to potęgi liczby 2 od (0 do 19)
Wskazówka

-całe polecenie ma 9 znaków z cyframi, nawiasami i operatorem



Zadanie 9
Dla wektora A=[1-i,2i,1i] sprawdzić czy wszystkie współrzędne wektora są rzeczywiste/urojone?
Wskazówka:

Zastosować funkcję isnumeric(), isreal().


Zadanie 10
Mając następującą strukturę

my_struct.data = [1 3 4 5];

my_struct.Fs = 512;
a)Dodaj element 3 z pola data do elementu 4 z pola data, wynik zapisz w nowym polu suma.

b) Zapisz strukturę do pliku „filename.mat”,

Następnie można skasować i załadować strukturę danych

>>clear


>>clc

>>load filename



>>whos
c) Sprawdzić czy długość pola data jest równa długości pola Fs. Użyć polecenia length().

d) Sprawdzić czy długość pola data jest większa od długości pola Fs.



©operacji.org 2017
wyślij wiadomość

    Strona główna