You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

Biblioteka funkcji Matlab wspomagająca współpracę ze SWIP5 może być podzielona na kilka rodzajów funkcji

1. Funkcje wspomagające dostęp do pól struktury MatlabQML i operacje na nich

  • getOptional - pobiera z obiektu MatlabQML opcjonalne pole. Zwraca jego kopię lub obiekt pusty jeżeli pole jest niezdefiniowane
  • getOptionalTree
  • [value] = getOptionalValue( owner, field ) - Funkcja zwraca kopię opcjonalnej wartości typu rzeczywistego (obiekt typu RealQuantity), całkowitego (obiekt typu IntQuantity) lub czasu (obiekt typu TimeQuantity) jeśli obiekt istnieje lub NaN, jeśli nie istnieje. W wielu strukturach QuakeML wartość ta i obiekt typu Quantity ją przechowujący nie są opcjonalne i musi być zaznaczona w QuakeML. W takich przypadkach użycie tej funkcja nie jest wymagana. Szybsze jest wywołanie po prostu „owner.field.value” . Wejściowe wartości: owner - struktura zawierająca obiektu typu Quantity , field - nazwa pola (ciąg znaków) z obiektem.
  • isOptional - sprawdza, czy w obiekcie MatlabQML jest zdefiniowane opcjonalne pole
  • [result] = isOptionalTree( owner, field1, field2,...) - Funkcja testuje istnienie opcjonalnego drzewa obiektów struktury MatlabQML obiektu owner. Zwraca fałsz jeżeli dla kolejnych pół field* w strukturze obiekt o danej nazwie jest pusty lub nie istnieje. W przypadku tylko jednego pola w ścieżce, funkcja isOptionalTree jest wolniejsza niż funkcja isOptional, której należy użyć zamiast tego.
  • [chanEq] = channelsEqual( channeln, channel2 ) - Funkcja p orównuje dwie nazwy kanałów obejmujące kody sieci, stacji, lokalizacji i kanału  w formacie WaveformStreamID. Jeśli w jednej nazwie kod sieci jest pusta lub nie istnieje, ignoruje porównanie sieci kodów sieci. Tak samo jest w przypadku kodu lokalizacji. Pierwsze zmienna wejściowa (channeln) może być wektorem WaveformStreamID, wtedy wynik jest wektorem logicznym. Druga zmienna wejściowa (channel2 ) musi być pojedynczym obiektem WaveformStreamID.
  • [staEq] = stationsEqual( stationn, station2 ) - Funkcja p orównuje dwie nazwy kanałów obejmujące kody sieci i stacji  w formacie WaveformStreamID. Jeśli w jednej nazwie kod sieci jest pusta lub nie istnieje, ignoruje porównanie sieci kodów sieci i porównuje tylko kody stacji. Pierwsze zmienna (stationn) może być wektorem WaveformStreamID, wtedy wynik jest wektorem logicznym. Druga zmienna wejściowa (station2) musi być pojedynczym obiektem WaveformStreamID.
  • [item, index] = findPublicID( tabela, id ) - Funkcja wyszukuje w tabeli element o identyfikatorze publicID = id. Tabelą może być dowolna tablica struktur zawierająca obiekty publicID, np.: events, pick, amplitudes, origins. Identyfikator (id) może być ciągiem znaków lub strukturą publicID z polem resourceID. Jeśli szukany identyfikator publiczny nie istnieje lub jest błędny, funkcja zwróci pustą zmienne. Element zwraca kopię znalezionego elementu w tabeli (item) oraz jego indeks (index) w tablicy, jeżeli chcemy modyfikować obiekt.

Funkcje getOptional getOptionalTree, i getOptionalValue należy zawsze stosować dla pół opcjonalnych- oznaczanych w opise QukeML jako [0..1] lub [0..*]. W przypadku tylko pół struktury, które na pewno występują w QuakeML można stosować odwołania do nich poprzez kropkę, t.j. np. zamiast wywołania value = getOptional( owner, 'field' ) zastosować value =owner.field albo zamiast value = getOptionalTree( owner, 'field1', 'filed2') zastosować value = owner.field1.filed2 .

2. Funkcje zamieniające obiekty MatlabQML na typowe obiekty Matlaba

  • stationName2string
  • channelName2string
  • unixTimeSamples
  • timeQML2Date

3. Funkcje ogólne pobierające typowe wartości sejsmiczne z obiektu zjawiska sejsmicznego (event)

  • [latitude, longitude, depth, time, porigin] = event2coordinates( event, ... ) - Funkcja zwraca współrzędne zjawiska. Używa getOrigin, aby uzyskać współrzędne. (Zobacz funkcję getOrigin). Wejście: event - obiekt event QuakeML, Parametry opcjonalne: 'methodID', method, ... - znajduje tylko źródła wstrząsu zlokalizowane przez metodę o nazwie method; 'earthModelID', model, ... - znajduje tylko współrzędne zlokalizowany przy użyciu modelu prędkości Ziemi o nazwie model. Wartości wyjściowe: szerokość (latitude) i długość (longitude) geograficzna w stopniach, głębokość (depth) hipocentrum w km, czas wstrząsu (time) w formacie Matlab DateTime, porigin - kopia kopia obiektu origin. Jeśli nie może znaleźć źródła, funkcja zwraca wartości NaN i pusty porigin. Uwaga, w przypadku istnienia kilku lokalizacji i braku lokalizacji preferowanej, wybór lokalizacji, której współrzędne zostaną wypisane, może być losowy.
  • [value, type, magnitude] = getMagnitude( event, fn1, fn2, ...) - Funkcja wynajduje magnitudę zjawiska. Najpierw sprawdza, czy którykolwiek z nazw magnitud fn* jest preferowaną magnitudą zjawiska. Następnie szuka nazwy magnitudy fn1. Gdy nie może jej znaleźć, szuka magnitud stacyjnych fn1 i zwraca ich średnią wartość. Gdy nie może znaleźć magnitudy fn1, szuka magnitudy fn2 i tak dalej. Zwraca wartości: value - wartość magnitudy, type - typ magnitudy,  magnitude - kopia obiektu magnitudy, lub wartość pustą w przypadku wartości średniej magnitud stacyjnych. Przykładowe wywołanie: magnitude = SWIP5EventMagnitude( event, 'ML' ). Uwaga, w przypadku istnienia kilku równorzędnych magnitud tego samego typu i braku magnitudy preferowanej, wybór magnitudy przez tą funkcję może być losowy.
  • getMagnitudeFromStaMagnitudes
  • getMeanMag
  • getMomentTensor
  • [origin] = getOrigin( event, ... ) - Funkcja p obiera obiekt źródła (origin) z obiektu zjawiska sejsmicznego (event). Jeśli preferowane źródło jest niezdefiniowane, przyjmuje ostatnie źródło z listy źródeł. J eśli jest ich wiele, to ostatnie może być przypadkowe.   Parametry opcjonalne: 'methodID', method, ... - znajduje tylko źródła wstrząsu zlokalizowane przez metodę o nazwie method; 'earthModelID', model, ... - znajduje tylko współrzędne zlokalizowany przy użyciu modelu prędkości Ziemi o nazwie model. Wyjście: origin - kopia obiektu źródła w formacie MatlabQML. Jeśli pochodzenie nie istnieje lub nie spełnia opcjonalnego parametru, wyjście jest pustym obiektem. Uwaga, w przypadku istnienia kilku lokalizacji i braku lokalizacji preferowanej, wybór lokalizacji może być losowy.
  • getPicks

4. Funkcja do pracy na katalogu (wielu wstrząsach)

  • [out] = forAllEvents(quakeml, func, ...) - Funkcja ta pazwala otrzymywać jednym poleceniem tabelę wyników dla całego katalogu. Dla wszystkich zjawisk sejsmicznych zarejestrowanych w obiekcie quakeml, funkcja func jest wywoływana. Może to być funkcja specjalnie napisana lub jedna z funkcji bibliotecznych (patrz pkt. 3). Obiekt event musi być pierwszym parametrem funkcji func. Inne parametry func są opcjonalne i są tam przepisywane kolejne parametry wywoania forAllEvents . W wyniku wywołania funkcji dostajemy tablice komórkowa (cell). Każda linia odpowiada każdemu zjawisku, a każda kolumna odpowiada każdej zmiennej wyjściowej z func.

          Przykłady wywołania forAllEvents:
          magnitudes = forAllEvents(QuakeML, @getMagnitude, 'ML')
          dcr = forAllEvents(QuakeML, @CompareFM);
          resCNUD = linkCell(forAllEvents(QuakeML, @getResiduals, 'Stacja', 'CNUD'));
          evt = forAllEvents(QuakeML, @getOrigin, 'methodID', 'smi:igf.edu.pl/LocSAT');

5. Funkcje pomocnicze do manipulacja na parametrach (opcjach) wołania funkcji matlabowej

  • arispar
  • armanypars
  • aroptions
  • arparameters

6. Inne funkcje wspomagające przygotowanie danych do pracy w SWIP5 niezwiązane z MatlabQML.

Poniższa lista zawiera funkcje i skrypty przydatne do przygotowania pracy w SWIP5. Nie są one związane z przetawraniuem wstrząsów i zapisów sejsmicznych w Matlabie. Funkcje te m.in. pozwalają przygotować parametry do pracy w SWIP5 na podstawie obiektów z platformy Episodes.

  • createXMLShape(filename , shape1, shape2, ..., option1, optional_val1, ..., shapeN, ...) - Funkcja createXMLShapes tworzy kształty XML dla map SWIP5. Parametry wejściowe: filename - nazwa pliku, w którym zostanie zapisany kształt. Rozszerzenie nazwy pliku powinno być „.xml”, shape* - tablica struktur kształtów z czterema polami: 1. Lat jest wektorem szerokości punktów polilinii granicy kształtu. 2. Long jest wektorem długości geograficznych punktów polilinii granicy kształtu. Liczba wartości w Lat i Log musi być taka sama. 3. Contour to kolor RGB konturu kształtu, po którym następuje tabela [r,g,b,w] gdzie: r - czerwony, g - zielony, b - niebieski, w - szerokość linii. Zalecana wartość to [0,0,0,1] (czarny) 4. Face to kolor RGB lica kształtu, po którym następuje tabela [r,g,b,a] gdzie a - przezroczystość. Zalecana wartość to [1,1,1,1] (biały) 5. Name - opcjonalny tekst opisujący kształt. Musi być jeden lub wiele kształtów. Jeśli pola Kontur lub Ściana są niezdefiniowane, przyjmowane są domyślne kontury i ściany. Domyślny kontur to [0,7, 0,7, 0,7, 1], podczas gdy domyślna powierzchnia to [0,9, 0,9, 0,9, 0]. Domyślne wartości dla foliowania kształtów można zmienić za pomocą opcji ..., option*, optional_val*, ... - zmiany domyślnego konturu lub twarzy dla kolejnych kształtów. Istnieją trzy możliwości: ..., 'Contour', new_default_contour, ... - definiuje nowy domyślny kolor konturu dla kolejnych kształtów. Wartości konturu znajdują się w parametrze new_default_contour po opcji. ..., 'Face', new_default_face, ... - definiuje nowy domyślny kolor płaszczyzny dla następujących kształtów. ..., 'Default colors', ... - przywraca początkowe kolory konturu i powierzchni. Po opcji nie następuje parametr. Opcje mogą znajdować się przed pierwszym kształtem lub między kształtami w wywołaniu funkcji. Opcje tekstowe: Istnieje 5 opcji pozycji tekstu w stosunku do kształtu: ...,'top',... ...,'bottom',... ...,'left',... ...,'right',... ...,'middle',... Proste użycie createXMLShape z plikiem kształtów odcinków: 1. Wywołać clear; 2. Przeczytać plik kształtów z Episodes; 3. Wywołać createXMLShapes(nazwa pliku, d)
  • ISEPOSVelcityModel_to_Vel2Grid


  • No labels