Oto przykład funkcji, która może posiadać dowolną liczbą dwuelemcntowych wektorów i rysuje linię je łączącą: function testvar (varargin) for i = 1:length(varargin)
x(i) = varargin{i} (1) ; % Indeksowanie macierzy komórek
y(i) = varargin{i}(2);
end
xmin = min(0,min(x)); ymin = min(0,min(y)) ;
axis([xmin fix(max(x))+3,yminfix(max(y)) + 3 ]) plot(x,y)
Napisana w ten sposób funkcja testvar może działać z różnymi listami wprowadzanych danych, na przykład:
testvar{[2 3],[1 5] , [4 8], [6 5], [4 2], [2 3]) testvar([-l 0],[3 -5], [4 2],[1 1])
Ponieważ zmienna varargin przechowuje wszystkie argumenty wejściowe w macierzy komórek, w celu wyciągnięcia danych niezbędne jest zastosowanie indeksowania macierzy komórek. Na przykład y(i) = varargin{i}(2);
Na indeks macierzy komórek składają się dwa wyrażenia:
- wyrażenie indeksujące komórkę, w nawiasach klamrowych,
- wyrażenie(-a) indeksujące jej zaw artość, w zwykłych nawiasach.
W linii kodu umieszczonej powyżej, wyrażenie indeksowe {i} oznacza i-tą komórkę zmiennej varargin. Zaś wyrażenie (2) reprezentuje drugi element zawartości tej komórki.
W przypadku, gdy dopuszczamy większą ilość argumentów wyjściowych, musimy umieścić je wszystkie w macierzy komórek varargout. W celu określenia, z iloma argumentami wyjściowymi wywołujemy funkcję, używamy instrukcji nargout. Na przykład, poniższy fragment kodu przyjmuje dane w postaci macierzy złożonej z dw'óch kolumn, gdzie pierwsza kolumna reprezentuje zestaw' współrzędnych x, natomiast druga współrzędne y. Dzieli on tę macierz na dwa oddzielne [xi yi] wektory, które możemy podać funkcji testvar z poprzedniej strony: function [varargout] = testvar2(arrayin) for i = 1:nargout
varargout{i}= arrayin(i,:) % przypisanie macierzy komórek end
Instrukcja przypisania umieszczona wewnątrz pętli for używa składni przypisania macierzy komórek. Po lew-ej stronie tej instrukcji, dotyczącej macierzy komórek, przy indeksowaniu zastosowano nawiasy klamrowe, aby zaznaczyć, że dane mają być umieszczone wewnątrz komórek.
104