Краткое руководство по октаве

Язык программирования

Это 15-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Преподаватель порекомендовал, что проще всего начать с искусственного интеллекта — это октава, после его написания будет удобнее использовать python и c++.

Введение

GNU Octave is a high-level language primarily intended for numerical computations. It is typically used for such problems as solving linear and nonlinear equations, numerical linear algebra, statistical analysis, and for performing other numerical experiments. It may also be used as a batch-oriented language for automated data processing.

GNU Octave — это язык высокого уровня, используемый в основном для числовых вычислений. Он обычно используется для решения таких задач, как линейные и нелинейные уравнения, численная линейная алгебра, статистический анализ и для выполнения других численных экспериментов. Его также можно использовать в качестве пакетно-ориентированного языка для автоматизации обработки данных.

Это просто вводная информация, дополнительные функции вы можете найти в официальной документации:octave.pdf

базовый

  1. Комментарий %

    • Аналогично // в C++ и # в python.
    • image.png
  2. an используется для хранения результатов вывода

  3. Если вам не нравится вводить префиксы строк, вы можете настроить ихPS1('你想改成的内容');

    • image.png

    Это не навсегда. После перезагрузки компьютера он вернется к настройкам по умолчанию.

  4. helpпомощь Если вы забыли использование определенного оператора, вы можете использовать этот запрос.

    такие как вводhelp eyeИспользование глаза будет отображаться.image.png

5. Несколько операторов могут быть выполнены одновременно через запятую.c octave:226> a=4,b=5,c=6 a = 4 b = 5 c = 6 6. quit,exitОктаву можно отключить (если не хотите нажимать X в правом верхнем углу) 7.addpath('路径')добавить путь

оператор

арифметические операторы

сложение, вычитание, умножение и деление

octave:1> 1+5
ans = 6
octave:2> 1*5
ans = 5
octave:3> 1/5
ans = 0.2000
octave:4> 1-5
ans = -4
octave:5> 5^2
ans = 25

Логические операторы

  • равный==
  • не равно~=
  • или||
  • и&&
  • исключающее ИЛИxor(a,b)
  • больше или равно >=
  • больше, чем>
ans = 0
>>1==1
ans = 1
>>1 ~=2
ans = 1
>>1&&2
ans = 1
>>1&&0
ans = 0
>>1||0
ans = 1
>>xor(1,1)
ans = 0
>>xor(1,2)
ans = 0
>>xor(0,1)
ans = 1
>>1>=2
ans = 0
>>1<2
ans = 1

оператор присваивания

  • =оператор присваивания
    • Добавление точки с запятой после оператора не печатает оператор присваивания напрямую.
    • Оператор присваивания печатается непосредственно без точки с запятой после оператора
>>a=1   %a=1后边没分号,所以输入回车之后下一行会直接打印a=1
a = 1
>>a     %再输入a回车看看是否赋值成功
a = 1
>>b=2;  %b=2后边加上分号了,所以下一行不会直接打印b的赋值
>>b     %输入b回车,查看给b的赋值
b = 2   

>>c=pi
c = 3.1416 

форматированный вывод

  • disp(x): вывести значение x
  • disp(sprintf('%0.2f',c)): форматированный вывод с двумя десятичными знаками, это то же самое, что и язык C
  • format long/short: не влияет на целые числа, но влияет на десятичный формат вывода.
>>disp(a)
1
>>disp(c)
3.1416
>>disp(sprintf('%0.2f',c))
3.14

>>format long
>>a
a = 1
>>c
c = 3.141592653589793
>>format short
>>a
a = 1
>>c
c = 3.1416

Векторы и матрицы

Официальные исходные слова матрицы декларации:

Vectors and matrices are the basic building blocks for numerical analysis. To create a new matrix and store it in a variable so that you can refer to it later, type the command

octave:1> A = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]

Octave will respond by printing the matrix in neatly aligned columns.

>>martix = [1,2,3;4,5,6;7,8,9]
martix =

   1   2   3
   4   5   6
   7   8   9

Конечно, есть много других способов записи, хотя нестандартными можно объявить и матрицы, здесь не перечисленные.

Объявите вектор-строку без добавления символов или запятых между элементами.

martix =

   1   2
   2   3
   3   4

>>vector=[1 2 3]
vector =

   1   2   3

>>vector = [4;5;6]
vector =

   4
   5
   6

Другое специальное написание:

  • 变量 = 起始:终止, который генерирует вектор с шагом 1
  • 变量 = 起始:步长:终止, создаст вектор
    > v = 1:5
    v =
    
       1   2   3   4   5
    
    > m = 1:0.5:1
    m = 1
    octave:3> m = 1:0.5:5
    m =
    
        1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000
    
  • ones(a,b)Создайте матрицу только с 1 в строке и столбце b
    • Кромеonesиzeros, все сгенерированные элементы равны 0, но нет ни двойки, ни тройки...
    •   >ones(2,3)
        ans =
      
           1   1   1
           1   1   1
      
  • rand(n) образует квадратную матрицу порядка n, элементы которой являются случайными числами в диапазоне 0-1.
  • rand(a,b) генерирует матрицу случайных чисел от 0 до 1 в строке a и столбце b
    •   >rand(2,3)
        ans =
      
           0.4046   0.4508   0.8021
           0.6986   0.8620   0.2631
      
    • max(rand(n),rand(n))Создайте несколько квадратных матриц, возьмите большее значение, чтобы сформировать новую квадратную матрицу.
      octave:124> c = max(rand(4),rand(4))
      c =
      
         0.8010   0.9926   0.7241   0.9053
         0.9007   0.3026   0.9856   0.5710
         0.7679   0.2630   0.5200   0.9615
         0.7333   0.5113   0.6957   0.5683
      
  • randn(a,b)Он также генерирует матрицу случайных чисел со строкой и столбцом b, но она соответствует распределению Гаусса (нормальному распределению). Возвращает матрицу с нормально распределенными случайными элементами с нулевым средним значением и дисперсией 1.
    • Нормальное распределение:
    image.png
  • randi()
    • randi(max,m,n): создать матрицу из m строк и n столбцов от 1 до max
    • randi([min,max],m,n): создать матрицу из m строк и n столбцов min~max
    •   >randi(5,3,3)
        ans =
      
           1   5   5
           5   2   1
           5   1   1
      
    •   >randi([5,10],5,5)
        ans =
            6    8    6    8    5
           10    9   10    8    7
            5    7    7    9   10
           10    8   10    8    8
           10    9    7    6    7
      
      
  • eye(n)сгенерировать n-мерную единичную матрицу
    >eye(5)
    ans =
    
    Diagonal Matrix
    
       1   0   0   0   0
       0   1   0   0   0
       0   0   1   0   0
       0   0   0   1   0
       0   0   0   0   1
    
  • matrixB = matrixA(x:y,v:w) : Сформируйте столбец x~y row v~w матрицы A в новую матрицу
    • :представляет все элементы
    • a:bпредставляет элементы от a до b
    • [a b c]Представляет abc три строки или столбца
    • Вышеупомянутые три метода представления могут также использоваться в других методах матрицы, таких как присвоение, печать
  • матричная сшивка
    • Добавьте столбец справа от матрицы
      octave:30> A
      A =
      
          4    2    7    5
          1   10    7   10
          5   10    9    9
      
      octave:31> A = [A,[2;4;5]]
      A =
      
          4    2    7    5    2
          1   10    7   10    4
          5   10    9    9    5
      
    • matrixC=[matrixA matrixB]Горизонтальная строчка Писать[matrixA, matrixB]То же самое, с запятыми или без них
      octave:33> A = randi(5,2,3)
      A =
      
         4   1   3
         2   3   5
      
      octave:34> B = randi(5,2,3)
      B =
      
         5   4   5
         1   1   3
      
      octave:35> c = [A B]
      c =
      
         4   1   3   5   4   5
         2   3   5   1   1   3
      
    • matrixC=[matrixA; matrixB]Вертикальная строчка
      octave:33> A = randi(5,2,3)
      A =
      
         4   1   3
         2   3   5
      
      octave:34> B = randi(5,2,3)
      B =
      
         5   4   5
         1   1   3
      
      octave:36> d=[A;B]
      d =
      
         4   1   3
         2   3   5
         5   4   5
         1   1   3
      
  • matrix(:)Поместите все элементы в матрице в вектор-столбец
    octave:30> A
    A =
    
        4    2    7    5
        1   10    7   10
        5   10    9    9
        
    octave:31> A(:)
    ans =
    
        4
        1
        5
        2
       10
       10
        7
        7
        9
        5
       10
        9
        2
        4
        5
    

разное

  • hist(变量)

    Вы можете нарисовать изображение переменнойimage.png

    Если вы чувствуете, что это слишком мало. что можно использоватьhist(变量,条纹数), на картинке ниже изображение после нанесения 50 полосок.image.png

  • Размер обнаружения

    • size()
    • length()

    Как видно из рисунка ниже, length отображает длину матрицы. size показывает, сколько строк и столбцов имеет матрица. size (имя матрицы, 1/2), где 1 представляет параметр строки, а 2 представляет параметр столбца.

    v =
    
        9    9    5    8    8
        5   10    7    6    8
        6    7    7    7    6
        7   10    8    7    9
        7   10    7    5    6
        
    >length (v)
    ans = 5
    >size(v)
    ans =
    
       5   5
    >size(v,1)
    ans = 5
    
  • показатель:

    • matrix(i,j)Отобразите элемент в строке i и столбце j
      octave:26> A = randi(10,3,4) %生成一个1~10之间随机数的 3×4 的矩阵
      A =
          4    2    7    5
          1   10    7   10
          5   10    9    9
      octave:27> A(2,3)            %打印这个矩阵2行3列的元素
      ans = 7
      
    • matrix(:,[a,b,c...])
      • :: представляет все
      • []: выберите те, которые находятся в квадратных скобках
      •   octave:26> A = randi(10,3,4)
          A =
        
              4    2    7    5
              1   10    7   10
              5   10    9    9
        
          octave:27> A(:,[1,2,4])   %显示A所有行的1,2,4列
          ans =
        
              4    2    5
              1   10   10
              5   10    9
        
  • показать существующие переменные

    • who: Показать все текущие переменные
    • whos: Показать все текущие переменные и подробную информацию
    • image.png
  • удалить переменнуюclear

    • clear 变量удалить три переменные
    • `clear удаляет все переменные
    octave:12> a = 15   % 给a赋值15
    a = 15
    octave:13> a        % 打印a
    a = 15              % 显示a的值
    octave:14> clear a
    octave:15> a        % 再次打印a
    error: 'a' undefined near line 1, column 1    %报错
    

мобильные данные

Те, кто использовал другие командные строки, должны иметь возможность адаптироваться, и октава также поддерживает некоторые команды.

  • pwd: список текущего каталога
  • cd xxx文件夹: войти в папку ххх
  • ls: Список текущей информации каталога
  • Загрузить файл:
    • load 文件名
    • load('文件名')
  • сохранить переменную имени файла; : сохранить переменную в файл, напримерsave data.txt num, сохранить переменную num в data.txt (если такого файла нет в директории операции, будет создан новый файл, если в директории есть этот файл, то он будет перезаписан)

Данные двух файлов, featureX и priceY, приведены ниже, и эти два файла сохраняются сами по себе. функцияX:

2104  3
1600  3
2400  3
1416  2
3000  4
1985  4
1534  3
1427  3
1380  3
1494  3
1940  4
2000  3
1890  3
4478  5
1268  3
2300  4
1320  2
1236  3
2609  4 
3031  4
1767  3
1888  2
1604  3
1962  4
3890  3
1100  3
1458  3
2526  3
2200  3
2637  3
1839  2
1000  1
2040  4
3137  3
1811  4
1437  3
1239  3
2132  4
4215  4
2162  4
1664  2
2238  3
2567  4
1200  3 
852  2 
1852  4 
1203  3 

priceY:

399900
329900
369000
232000
539900
299900
314900
198999
212000
242500
239999
347000
329999
699900
259900
449900
299900
199900
499998
599000
252900
255000
242900
259900
573900
249900
464500
469000
475000
299900
349900
169900
314900
579900
285900
249900
229900
345000
549000
287000
368500
329900
314000
299000
179900
299900
239500

Сначала войдите в соответствующий рабочий каталог.

image.png

Используйте who, чтобы увидеть, какие переменные доступны в данный момент.

image.png

X6price действительно успешно прочитал файл под печатью.

image.png

Проверьте с размером, импортированные данные сохраняются в матрице.

image.png

Назначьте строки с 1 по 5 и столбец 2 матрицы X6feature матрице x и сохраните матрицу x в файле data.txt.

image.png

рассчитать

В дополнение к арифметическим операторам, упомянутым в начале, существуют следующие операции.

Обратите внимание на специальный.*, матрица умножается на одну и ту же позицию, то есть перемножаются элементы в одной и той же позиции матрицы.

octave:37> A
A =

   4   1   3
   2   3   5

octave:38> B
B =

   5   4   5
   1   1   3

octave:39> A * B    %AB无法相乘
error: operator *: nonconformant arguments (op1 is 2x3, op2 is 2x3)
octave:40> A .* B   %AB可以点乘
ans =

   20    4   15
    2    3   15

.^возвести в степень каждый элемент матрицы

octave:43> A
A =

   4   1   3
   2   3   5

octave:44> A .^2
ans =

   16    1    9
    4    9   25

octave:45>

矩阵/数То есть каждый элемент матрицы делится на число, но если вы хотите разделить число на каждый элемент матрицы, в результате получается все равно матрица, то вам нужно./

octave:38> B
B =

   5   4   5
   1   1   3
octave:50> 2 ./B
ans =

   0.4000   0.5000   0.4000
   2.0000   2.0000   0.6667

Если вы хотите добавить или вычесть число к каждому элементу матрицы, используйте+-Вот и все.

octave:71> C
C =

   2  -1  -4   1
  -5  -2  -1  -1
   1  -1  -5  -4

octave:72> C+1
ans =

   3   0  -3   2
  -4  -1   0   0
   2   0  -4  -3

octave:73> C-2
ans =

   0  -3  -6  -1
  -7  -4  -3  -3
  -1  -3  -7  -6

octave:74> 1+C
ans =

   3   0  -3   2
  -4  -1   0   0
   2   0  -4  -3

log(n)Логарифмическая база здесь e, т.е.logen\log_enилиlnn\ln n

octave:57> log(2)
ans = 0.6931
octave:58> log(e)
ans = 1
octave:59> A
A =

   4   1   3
   2   3   5

octave:60> log(A)
ans =

   1.3863        0   1.0986
   0.6931   1.0986   1.6094

exp(n)эквивалентно выполнениюene^n

octave:61> exp(1)
ans = 2.7183
octave:62> exp(2)
ans = 7.3891
octave:63> A
A =

   4   1   3
   2   3   5

octave:64> exp(A)
ans =

    54.5982     2.7183    20.0855
     7.3891    20.0855   148.4132

abs()найти абсолютное значение

octave:66> C = randi([-5,2],3,4)    %随机生成一个3×4的矩阵,取值在-5\~2之间
C =

   2  -1  -4   1
  -5  -2  -1  -1
   1  -1  -5  -4

octave:67> abs(-1)
ans = 1
octave:68> abs(C)
ans =

   2   1   4   1
   5   2   1   1
   1   1   5   4

matrix'Транспонировать, добавить английские одинарные кавычки после имени матрицы

octave:75> C
C =

   2  -1  -4   1
  -5  -2  -1  -1
   1  -1  -5  -4

octave:76> C'
ans =

   2  -5   1
  -1  -2  -1
  -4  -1  -5
   1  -1  -4

flipudОтразите матрицу по вертикали. Слева направо, справа налево.

result1 =

   17    0    0    0    0
    0    5    0    0    0
    0    0   13    0    0
    0    0    0   21    0
    0    0    0    0    9

octave:140> flipud(result1)
ans =

    0    0    0    0    9
    0    0    0   21    0
    0    0   13    0    0
    0    5    0    0    0
   17    0    0    0    0

矩阵<数值Больше и равно ах все равно. Возвращает матрицу той же широты, каждый элемент является логическим значением, возвращаемым путем сравнения соответствующего элемента позиции.

a =

   1   5   3   4

octave:85> a<2
ans =

  1  0  0  0

magic(n)Сгенерируйте магический квадрат порядка n. Так называемый магический квадрат заключается в том, что строки, столбцы и диагонали в сумме дают одно и то же значение

octave:95> magic(4)
ans =

   16    2    3   13
    5   11   10    8
    9    7    6   12
    4   14   15    1

octave:96> magic(3)
ans =

   8   1   6
   3   5   7
   4   9   2

find(公式)

  • оказатьсявекторсопоставляет данные и возвращает свой индекс
    a =
    
       1   5   3   4
    
    octave:88> find(a<3)
    ans = 1
    octave:89> find(a>2)
    ans =
    
       2   3   4
    
  • оказатьсяматрицасопоставление данных в
    C =
    
    9    7    3    5
    4    2    5   10
    4    1    9   10
    
    octave:114> [r,c]=find(C==1)
    r = 3
    c = 2
    octave:115> [r,c]=find(C>7)
    r =
    
       1
       3
       2
       3
    
    c =
    
       1
       3
       4
       4
    

sum()суммаprod()умножать

c =

   1
   3
   4
   4

octave:117> sum(c)
ans = 12
octave:118> prod(c)
ans = 48

floor()округлить внизceil()Округлен

a =

   0.5000
   1.5000
   2.0000
   2.0000

octave:120> floor(a)
ans =

   0
   1
   2
   2
   
octave:121> ceil(a)
ans =

   1
   2
   2
   2

max(矩阵)принять максимальное значение Если это матрица, отобразите максимальное значение каждого столбца; если это вектор, отобразите только одно максимальное значение

  • v=max(matrix): присвоить v максимальное значение матрицы, что не является жестким требованием, v можно изменить на другое имя
  • [v,i]=max(matrix): присвоить максимальное значение матрицы и ее позицию v и i
  • max(max(matrix)): получить максимальное значение всей матрицы
  • max(matrix(:)): получить максимальное значение всей матрицы, это преобразовать матрицу в громкую и потом найти максимальное значение
c =

   2   1   4   1
   5   2   1   1
   1   1   5   4

octave:78> val = max(c)
val =

   5   2   5   4

octave:79> [val,ind]=max(c)
val =

   5   2   5   4

ind =

   2   2   3   3

max(矩阵,[],1/2)Получите максимальное значение каждой строки или столбца матрицы для формирования вектора

  • 1 взять каждый столбец
  • 2 взять каждый ряд
c =

   8   9   7   9
   9   3   9   5
   7   2   5   9
   7   5   6   5

octave:129> max(c,[],1)
ans =

   9   9   9   9

octave:130> max(c,[],2)
ans =

   9
   9
   9
   7

Небольшое упражнение:Создайте магический квадрат, затем проверьте, что сумма каждой строки, столбца и диагонали равна одному и тому же числу.

octave:131>  m = magic(5)     %生成一个5×5的幻方
m =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

octave:132> sum(m,1)          %每列相加都是65
ans =

   65   65   65   65   65

octave:133> sum(m,2)          %每行相加都是65
ans =

   65
   65
   65
   65
   65
   
octave:135> e=eye(5)          %生成一个单位矩阵
e =

Diagonal Matrix

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1

octave:136> result1 = e .* m   %单位矩阵同位相乘原矩阵,新矩阵只剩主对角线元素
result1 =

   17    0    0    0    0
    0    5    0    0    0
    0    0   13    0    0
    0    0    0   21    0
    0    0    0    0    9
octave:139> sum(result1(:))   %主对角线相加为65
ans = 65

octave:141> result2 = m .* flipud(e)
result2 =

    0    0    0    0   15
    0    0    0   14    0
    0    0   13    0    0
    0   12    0    0    0
   11    0    0    0    0

octave:142> sum(result2(:))   %副加为65
ans = 65

pinv()Инвертировать матрицу

m =

   8   1   6
   3   5   7
   4   9   2

octave:145> pinv(m)
ans =

   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778

Рисование

plot(A,B)A — вектор абсцисс, B — ордината

octave:173> t=[-1:0.01:1];
octave:174> p1 = sin(2*pi*t);
octave:175> plot(t,p1)

image.png

octave:176> p2 = cos(2*pi*t);
octave:177> plot(t,p2)

image.png

После рисования картинки, если вы хотите нарисовать другую картинку, она будет перерисована, используйтеhold onВы можете сохранить его, продолжить рисовать на основе исходного изображения, и оно автоматически переключит цвета для вас.

octave:177> plot(t,p2)
octave:178> hold on
octave:179> plot(t,p1)

image.png

Добавьте метки к горизонтальной и вертикальной осям.

octave:183> xlabel('time')
octave:184> ylabel('speed')

image.png

Добавить легенду

legend('cos','sin','y')

image.png

добавить заголовок

title('my demo')

image.png

сохранить документ

print -dpng '文件名'

После сохранения в вашем текущем каталоге появится дополнительная картинка. Если вы не знаете текущий каталог, введите pwd, чтобы просмотреть путь к текущему каталогу.

Если вы хотите сгенерировать несколько изображений одновременно, добавьте перед нимиfigure(n);Изображения будут генерироваться по порядку.

octave:194> figure(1);plot(t,p1)
octave:195> figure(2);plot(t,p2)

image.png

Комбинированные изображения дисплеяsubplot(n,m,index), разделите изображение на n строк и m столбцов и нарисуйте в позиции индекса.

octave:197> subplot(2,3,4)
octave:198> plot(t,p1)
octave:199> subplot(2,3,2)
octave:200> plot(t,p2)

image.png

Изменить диапазон значений вертикальной и горизонтальной осейaxis([横轴起始 终止 纵轴起始 终止])

octave:203> subplot(1,2,1)
octave:204> plot(t,p2)
octave:205> subplot(1,2,2)
octave:206> plot(t,p2)
octave:207> axis([0 1 -2 2])

Два изображения ниже представляют собой одно и то же изображение, а правая сторона — это изображение после изменения диапазона оси координат.

image.png

clfочистить все изображение,closeНе нажимайте правый верхний угол ×, чтобы закрыть изображение

Матричная визуализация imagesc()

a =

   8   1   6
   3   5   7
   4   9   2

octave:217> imagesc (a)

image.png

В качестве отступления, как бывший студент-биолог, я, кажется, внезапно понял, как получились наши предыдущие тепловые карты.

octave:218> load 6feature.txt   % 还记得这组数据吗,就是我上边给的那两组数据的第一组。
octave:219> imagesc (X6feature)

После его рисования изображение выглядит так Ну, я действительно понял, как рисовать тепловую карту.

image.png

Теперь давайте сгенерируем тепловую карту (фальшивую, а не тепловую карту, просто как она выглядит)

octave:220> r = rand(5,50);
octave:221> imagesc (r)

image.png

colorbarДобавьте легенду для колориметрии.

octave:223> colorbar

image.png

colormap grayсделать его в градациях серого

 colormap gray

image.png

Базовая грамматика

  • цикл

    for var = expression 
    body 
    endfor
    
    while (condition) 
    body 
    endwhile
    
    • На самом деле, endwhile, endfor и endif ниже могут быть напрямую записаны как end
    • break, continue также можно использовать
  • судить

    if (condition) 
        then-body 
    endif
    
    if (condition) 
        then-body 
    elseif (condition) 
        elseif-body 
    else 
        else-body 
    endif
    
    • взять каштан

      v =
      
         8    4    8    2    5
         7    4    6    1    3
        10    6    6    4   10
         6    6    8    8   10
         9    1   10    5    7
      
      > for i = 1:5
      >     for j = 1:5
      >         if v(i,j)<5
      >             continue
      >         else
      >             disp(v(i,j))
      >         endif
      >     endfor
      > endfor
      8
      8
      5
      7
      6
      10
      6
      6
      10
      6
      6
      8
      8
      10
      9
      10
      5
      7
      
  • функция

    • функция без возвращаемого значения
      function name 
          body 
      endfunctio
      
    • функция с возвращаемым значением
      function [ret-list] = name (arg-list) 
          body 
      endfunction
      
  • Напишите функцию в октаве:

    >function say_hi(name)
    > str = ['hello' name];
    > disp(str)
    > endfunction
    >say_hi ('Sian')
    helloSian
    
  • Пусть октава использует внешнюю функцию.

    • Поместите файл функции в текущий каталог или путь
    • Имя файла - это имя функции
    • суффикс.m
  • взять каштан Теперь напишите функцию show_matrix:

    image.png

    Хранится в пути и называется show_matrix.m

    image.png

    Вернитесь к объявлению матрицы в октаве и посмотрите, сможете ли вы успешно напечатать ее с помощью этой функции.

    image.png

  • Другое целое с возвращаемым значением

    image.png

    image.png