macierzy struktury o wymiarach 1 na 1, której jedynym elementem będzie druga struktura macierzy patient B = patient(2)
Indeksowanie bezpośrednie jest zwykle najbardziej efektywną metodą przypisywania lub odzyskiwania wartości pól. Jeśli jednak znamy jedynie nazwę pola w postaci łańcucha - na przykład, gdy użyliśmy funkcji fieldnames, aby uzyskać nazwę pola wewnątrz M-pliku - możemy użyć funkcji setfield lub getfield, aby osiągnąć dokładnie to samo.
getfield uzyskuje wartość lub wartości z pola lub elementu pola: f=getfield(array, {array_index}, 'field', {field_index}) gdzie argument field_index jest opcjonalny, a argument array_index jest opcjonalny dla macierzy struktury o w'ymiarach 1 na I.
Składnia funkcji odpowiada temu wyrażeniu
f = array(array_index).field(field_index);
Na przykład, aby uzyskać dostęp do pola narae w drugiej strukturze macierzy patient, musimy użyć
str = getfield(patient, {2}, 1name1)
Podobnie, funkcja setfield umożliwia nam przypisywanie wartości polom za pomocą wyrażenia
f=setfield(array, {array_index}, 'field’, (field_index), value)
7.2.3. Stosowanie funkcji i operatorów
Na polach i elementach pól, które są macierzami, działania wykonywane są tak. jak działania na wszystkich innych macierzach MATLAB-a. W celu uzyskania dostępu do danych, używane jest indeksowanie. Na przykład aby znaleźć średnią ilość wierszy macierzy test wewnątrz patient (2 ) polecenie ma postać mean((patient(2).test)’)
Istnieje kilka sposobów zastosowania funkcji lub operatorów na polach wewnątrz macierzy struktury. Jednym ze sposobów na obliczenie sumy wszystkich pól billing w macierzy patient jest program: total = 0;
for j = 1:lenght(patient)
total = total + patient(j).billing;
end
Aby uprościć takie działanie, MATLAB umożliwia wykonywanie działań na wszystkich podobnie nazwanych polach wewnątrz macierzy struktury. Wystarczy umieścić pole struktury w nawiasach kwadratowych w' wywołaniu funkcji. Na przykład, możemy zsumować wszystkie pola billing struktury patient używając
total = sum ( [patient.billing]);
92