Octave w obliczeniach: komórki

Funkcja cell wywołana z pojedynczym argumentem zwróci kwadratową tablicę komórek (pustą).

>> A = cell(2)
A =
{
  [1,1] = [](0x0)
  [2,1] = [](0x0)
  [1,2] = [](0x0)
  [2,2] = [](0x0)
}

>> size(A)
ans =
   2   2

Funkcja cell wywołana z parą argumentów, zwróci prostokątną tablicę komórek (pustą), o określonych wymiarach.

>> A = cell(2,3)
A =
{
  [1,1] = [](0x0)
  [2,1] = [](0x0)
  [1,2] = [](0x0)
  [2,2] = [](0x0)
  [1,3] = [](0x0)
  [2,3] = [](0x0)
}

>> size(A)
ans =
   2   3

Funkcja cellstr z podanym argumentem tekstowym zwróci pojedynczą komórkę, zawierającą podany tekst.

>> A = cellstr('Jan Kowalski')

A =

{

  [1,1] = Jan Kowalski

}

>> size(A)

ans =

   1   1

Natomiast każdy wiersz argumentu tekstowego zapamiętany będzie w kolejnym wierszu tablicy komórek.

>> A = cellstr(['Jan Kowalski']')

A =

{

  [1,1] = J

  [2,1] = a

  [3,1] = n

  [4,1] =

  [5,1] = K

  [6,1] = o

  [7,1] = w

  [8,1] = a

  [9,1] = l

  [10,1] = s

  [11,1] = k

  [12,1] = i

}

>> size(A)

ans =

   12    1

Tworzona jest komórka, której zawartość stanowi użyty argument.

>> A = {[1 2 3;4 5 6]}

A =

{

  [1,1] =

     1   2   3

     4   5   6

}

>> size(A)

ans =

   1   1


>> A = {'Jan Kowalski'}

A =

{

  [1,1] = Jan Kowalski

}

>> size(A)

ans =

   1   1


Konwersja przy pomocy funkcji char

Ten rodzaj konwersji stosuje się często do „wydobywania” tekstu z komórek tekstowych.

>> A = cellstr('Jan Kowalski')

A =

{

  [1,1] = Jan Kowalski

}

>> char(A)

   ans = Jan Kowalski

>> whos

   Attr Name        Size                     Bytes  Class

   ==== ====        ====                     =====  =====

        A           1x1                         12  cell

        ans         1x12                        12  char

Ten rodzaj konwersji stosuje się często, aby „wydobyć” dane liczbowe z komórki (tablicy komórek) do tablicy liczbowej.

>> A = {[1 2 3;4 5 6]}

A =

{

  [1,1] =

     1   2   3

     4   5   6

}

>> cell2mat(A)

ans =

   1   2   3

   4   5   6

>> whos

   Attr Name        Size                     Bytes  Class

   ==== ====        ====                     =====  =====

        A           1x1                         48  cell

        ans         2x3                         48  double

   
Konwersja danych przy użyciu pary nawiasów klamrowych '{}’
>> A = {[1 2 3;4 5 6]}

A =

{

  [1,1] =

     1   2   3

     4   5   6

}

>> size(A)

ans =

   1   1

>> A{1,1}

ans =

   1   2   3

   4   5   6

>> whos

   Attr Name        Size                     Bytes  Class

   ==== ====        ====                     =====  =====

        A           1x1                         48  cell

        ans         2x3                         48  double



Przykłady z części KONWERSJA DANYCH Z KOMÓRKI (TABLICY KOMÓREK) DO TABLICY (numerycznej bądź znakowej) pokazały, że para nawiasów klamrowych '{}’ umożliwia „wydobycie” danych z komórki i zapamiętanie ich w postaci tablicy (numerycznej lub znakowej). Oczywiście, to „wydobycie” nie musi obejmować całej zmiennej.

>> A = {'1', '2', '3'; 'x', 'y', 'z'; '4', '5', '6'}

A =

{

  [1,1] = 1

  [2,1] = x

  [3,1] = 4

  [1,2] = 2

  [2,2] = y

  [3,2] = 5

  [1,3] = 3

  [2,3] = z

  [3,3] = 6

}


>> A{2,1}

ans = x


>> whos

   Attr Name        Size                     Bytes  Class

   ==== ====        ====                     =====  =====

        A           3x3                          9  cell

        ans         1x1                          1  char

Natomiast indeksowanie przy pomocy pary nawiasów okrągłych '()’ powoduje odczyt podzbioru tablicy komórek i zapamiętanie go jako komórki (tablicy komórek).

>> A(2,1)

ans =

{

  [1,1] = x

}

>> whos

   Attr Name        Size                     Bytes  Class

   ==== ====        ====                     =====  =====

        A           3x3                          9  cell

        ans         1x1                          1  cell



   

Indeksowanie umożliwia nie tylko podgląd określonego zakresu zmiennej, ale również zapisywanie treści do jakiegoś ustalonego zakresu tej zmiennej. Poniżej pokazano składnię polecenia, które przypisuje wartość zero (0) do pierwszej i trzeciej kolumny tablicy komórek, przechowywanej w zmiennej A.

>> A = {'1', '2', '3'; 'x', 'y', 'z'; '4', '5', '6'}

A =

{

  [1,1] = 1

  [2,1] = x

  [3,1] = 4

  [1,2] = 2

  [2,2] = y

  [3,2] = 5

  [1,3] = 3

  [2,3] = z

  [3,3] = 6

}

>> A(:,[1,3]) = {0}

A =

{

  [1,1] = 0

  [2,1] = 0

  [3,1] = 0

  [1,2] = 2

  [2,2] = y

  [3,2] = 5

  [1,3] = 0

  [2,3] = 0

  [3,3] = 0

}





   

Tak jak w przypadku tablic numerycznych lub znakowych, elementy tablic komórek mogą być usunięte przy użyciu symbolu pustej tablicy '[]’.

>> A = {'1', '2', '3'; 'x', 'y', 'z'; '4', '5', '6'}

A =

{

  [1,1] = 1

  [2,1] = x

  [3,1] = 4

  [1,2] = 2

  [2,2] = y

  [3,2] = 5

  [1,3] = 3

  [2,3] = z

  [3,3] = 6

}

>> size(A)

ans =

   3   3

>> A(1,:) = []

A =

{

  [1,1] = x

  [2,1] = 4

  [1,2] = y

  [2,2] = 5

  [1,3] = z

  [2,3] = 6

}

>> size(A)

ans =

   2   3

Natomiast „opakowanie” symbolu pustej tablicy parą nawiasów klamrowych '{[]}’ spowoduje usunięcie zawartości wskazanego podzbioru zmiennej A, z jednoczesnym pozostawieniem miejsca na tę zawartość.

   >> A = {'1', '2', '3'; 'x', 'y', 'z'; '4', '5', '6'}

A =

{

  [1,1] = 1

  [2,1] = x

  [3,1] = 4

  [1,2] = 2

  [2,2] = y

  [3,2] = 5

  [1,3] = 3

  [2,3] = z

  [3,3] = 6

}

>> size(A)

ans =

   3   3

>> A(1,:) = {[]}

A =

{

  [1,1] = [](0x0)

  [2,1] = x

  [3,1] = 4

  [1,2] = [](0x0)

  [2,2] = y

  [3,2] = 5

  [1,3] = [](0x0)

  [2,3] = z

  [3,3] = 6

}

>> size(A)

ans =

   3   3




   

Podobne wpisy