Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

Do výpočtu vektora najčastejšie vstupuje iný vektor (môže byť taktiež vypočítaný), alebo zoznam (pole) vektorov. Počet vektorov vstupujúcich do výpočtu nie je umelo obmedzený, avšak čím viac vektorov je potrebné spracovať, tým viac stúpa časová a pamäťová náročnosť výpočtu.

Pri načítaní hodnôt a zoznamov vektorov sú rozlišované dva typy funkcií. Prvý typ sprístupňuje obsah entít cez ich meno a druhý vracia načítaný obsah do lokálnej premennej príslušného typu. Odporúča sa použiť druhý typ - načítanie obsahu do lokálnej premennej.

Nasledovný príklad načítava hodnoty vektora Vector.Src v rovnakom časovom rozsahu, ako je načítavaný výsledný vypočítaný vektor s rovnakým krokom ako má výsledný vypočítaný vektor.

Blok kódu
languageeda-l
themeRDark
titleNačítanie hodnôt vektora
VECTOR _v;

-- Hodnoty budú prístupné cez identifikátor Vector.Src
%LoadVector(Vector.Src, _BT, _ET, _STEP);

-- Hodnoty budú prístupné cez premennú _v
_v := %LoadVectorData("Vector.Src", _BT, _ET, _STEP);

Načítanie vektora s parametrami

Do výpočtu vypočítaného vektora je možné voliteľne podsunúť parametre. Počet parametrov odovzdaných do výpočtu vektora je možné získať funkciou %GetParamsNr. Parameter je identifikovaný svojim indexom. Hodnotu kontrétneho parametra je možné priradiť do lokálnej premennej funkciou %GetParamValue. Ak hodnota parametra nie je kompatibilná s typom lokálnej premennej, do ktorej je priraďovaná, je generovaná chyba.

Blok kódu
languageeda-l
themeRDark
titleVector.Calc
REAL _value;
VECTOR _v;

IF %GetParamsNr() > 0 THEN
  -- Priradí hodnotu parametra na indexe 1 do premennej _value
  %GetParamValue(1, _value);
END IF;
%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Načíta vektor Vector.Calc s podsunutím hodnoty prvého parametra 2,5.

Blok kódu
languageeda-l
themeRDark
titleVector.Result
%LoadVektorWithParams(Vector.Calc, _BT, _ET, _STEP, 2.5);
RETURN Vector.Calc;

Pre zvýšenie prehľadnosti kódu a zjednodušenie práce s parametrami je odporúčané použitie pomenovaných parametrov.

Načítanie vektora s pomenovanými parametrami

Ide o načítanie vektora, ktorý má jasne menom definované parametre. Hodnoty sú týmto parametrom automaticky pridelené pri načítaní vektora. Nezadané parametre budú obsahovať neplatnú hodnotu. Nasledovný príklad pozostáva z dvoch vektorov. Vektor, ktorý spracováva výpočet s parametrami (Vector.Calc) a vektor, ktorý načítava vektor Vector.Calca odovzdáva mu hodnoty parametrov (Vector.Result).

Nasledujúci predpis zobrazuje vektor Vector.Calc, ktorý má definovaný pomenovaný parameter _value typu reálne číslo (1).

Blok kódu
languageeda-l
themeRDark
titleVector.Calc
PARAM REAL _value; -- (1)
VECTOR _v;

%CreateVectorInit(_v, _value, _BT, _ET, _STEP);

RETURN _v;

Vektor Vector.Result už len volá načítanie vektora Vector.Calc, ktorému odovzdá hodnotu parametra _value (1). Ako hodnotu parametra je možné zadať akýkoľvek výraz, ktorého výsledný typ je kompatibilný s typom parametra.

Blok kódu
languageeda-l
themeRDark
titleVector.Result
VECTOR _v;

v := %LoadVectorData("Vector.Calc", _BT, _ET, _STEP, , , _value => 2.5); -- (1)

RETURN _v;

Načítanie zoznamu vektorov

Načítanie zoznamu vektorov je zvyčajne realizované načítaním scenára vektorov (%LoadScenario, %LoadScenarioData) alebo skupiny vektorov (%LoadGroup, %LoadGroupData). Je však možné načítať aj ľubovolný zoznam vektorov na základe SQL príkazu (%LoadFilter, %LoadFilterSimple). Ak do výpočtu vstupujú aj hodnoty vektorov z načítaného zoznamu, je potrebné ich načítať/sprístupniť.

Blok kódu
languageeda-l
themeRDark
titleNačítanie zoznamu vektorov
INT _i, _nr;
VECTOR _v;

%CreateVector(_v, _BT, _ET, _STEP);
%LoadScenario(Scenario.Test, 1);
_nr := %ValuesNr(Scenario.Test);
IF _nr > 0 THEN
  -- Sprístupní hodnoty vektorov v zozname
  FOR _i = 1 TO _nr LOOP
    %LoadVector(Scenario.Test[_i], _BT, _ET, _STEP);
  END LOOP;

  -- Vypočíta súčet hodnôt na rovnakých indexoch
  _v := %Sum(Scenario.Test);
END IF;

Štruktúra VECTORS môže okrem EDA vektorov obsahovať aj odkazy na lokálne vektory (premenné typu VECTOR). V prípade odovzdania takejto štruktúry do iného vypočítaného vektora, budú hodnoty zdrojového lokálneho vektora dostupné na modifikáciu aj vo vnorenom vypočítanom vektore, pričom zmena hodnôt sa prejaví v každej úrovni vnorenia.

...

Nasledovný predpis predstavuje jednoduchý príklad použitia odkazov na lokálne vektory v poli vektorov.

Blok kódu
languageeda-l
themeRDark
VECTOR _v1, _v2;
VECTORS _w;
INT _i, _j;

%CreateVector(_v1, 5);
%CreateVector(_v2, 10);

-- Do poľa vektorov pridá lokálne vektory _v1 a _v2
_w := _w + _v1 + _v2;

-- Modifikuje hodnoty lokálnych vektorov nepriamo cez zoznam vektorov
FOR _i = 1 TO %ValuesNr(_w) LOOP
 FOR _j = 1 TO %ValuesNr(_w[_i]) LOOP
  _w[_i][_j] := _i + _j;
 END LOOP;
END LOOP;


Info
titleSúvisiace stránky:

Vytvorenie vektora
%CreateVectorInit
%ValuesNr