octave进行线性代数相关运算

在这里插入图片描述


前言:

线代老师推荐的软件,让我们逃离繁琐的计算/(ㄒoㄒ)/~~专注于想法

以下是octave中一些常用的线性操作,参考于:https://blog.csdn.net/iszhenyu/article/details/78712228:

向量/矩阵的生成

定义一个向量/矩阵

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


>> A = [1 2;     % 	;号在这里的作用可以看做是换行符,也就是生成矩阵的下一行。
> 3 4;
> 5 6]
A =
   1   2
   3   4
   5   6
   
>> V1 = [1 2 3]
V1 =
   1   2   3

>> V2 = [1; 2; 3]
V2 =
   1
   2
   3

矩阵生成的内置函数

ones(m, n) 函数生成一个m行n列的矩阵,矩阵中每个元的值为1。

zeros(m, n) 函数生成一个m行n列的矩阵,矩阵中每个元的值为0。

rand(m, n) 函数生成一个m行n列的矩阵,矩阵的每个元是0到1之间的一个随机数。

eye(m) 函数生成一个大小为m的单位矩阵。

>> ones(2, 3)
ans =
   1   1   1
   1   1   1

>> w = zeros(1, 3)
w =
   0   0   0

>> w = rand(1, 3)
w =
   0.19402   0.23458   0.49843

>> eye(4)
ans =
Diagonal Matrix
   1   0   0   0
   0   1   0   0
   0   0   1   0
   0   0   0   1

向量/矩阵的属性

默认创建了一个矩阵,方便下文说明
A =
1 2
3 4
5 6

矩阵的大小

内置size函数

size函数返回的结果也是一个矩阵,但这个矩阵的大小是1×2,这个1×2的矩阵中,两个元素的值分别代表了参数矩阵的行数和列数。

增加参数可以选择需要的数据size(A, 1)为行数,size(A, 2)为列数

>> sa = size(A);
>> sa
sa =
   3   2
   
>> size(A, 1)
ans =  3
>> size(A, 2)
ans =  2

矩阵的维度

内置length函数

对于矩阵来说,它获取的是矩阵中最大的那个维度的值;对于向量来说,它获取的就是向量的维度了

>> V = [1 2 3 4] 
V =
   1   2   3   4

>> length(V)
ans =  4

octave:67> length(A)
ans =  3

向量矩阵的运算

获取矩阵中的元素

获取矩阵指定行指定列的元素:使用括号取值,返回一个元素(注意,下标编号是从1开始的不是从0哦)

>> A(3, 2)
ans =  6

获取矩阵指定整行或整列的元素:括号中使用:代替行或列,返回一个向量

>> A(3,:)
ans =
   5   6

>> A(:, 2)
ans =
   2
   4
   6

也可以指定要获取的某几行或某几列的元素:括号中使用方括号包含你想选择的列

>> A([1, 3],:)
ans =
   1   2
   5   6

>> A(:,[2])
ans =
   2
   4
   6

矩阵的元素重新赋值:

>> A(:,2) = [10, 11, 12]
A =
    1   10
    3   11
    5   12

>> A(1,:) = [11 22]
A =

   11   22
    3    4
    5    6

矩阵进行扩展:(常用于增广矩阵)

>> A = [A [100; 101; 102]] 
A =
     1    2   100
     3    4   101
     5    6   102

矩阵间的运算

设A,B,C三个矩阵

>> A*C
>> A/C
>> A^2

矩阵间的点运算

可以理解为对矩阵中每个元素做对应运算

>> A .^ 2
ans =
    1    4
    9   16
   25   36

>> 1 ./ [1; 2; 3]
ans =
   1.00000
   0.50000
   0.33333

%(A中的各个元素乘以B中对应位置的元素)
>> A .* B  
ans =
   11   24
   39   56
   75   96
   
   
%(特殊情况:当一个实数与矩阵做乘法运算时,我们可以省略.直接使用*即可)
>> -1 * [1; -2; 3]  % 也可以简写为 -1[1; 2; 3]
ans =
  -1
   2
  -3

矩阵的常用操作汇总 ( 重要!!)

pinv(A): 矩阵的逆

rref(A):化简矩阵!!! (高斯)

A':矩阵的转置

>> V + ones(length(V), 1)  % V = [1; 2; 3]
ans =
   2
   3
   4

% 矩阵的转置
>> A'
ans =
   1   3   5
   2   4   6

% 求矩阵的逆
>> pinv(A)
ans =
   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778
  
>> rref(A)
ans =

   1   0  -1
   0   1   2
   0   0   0

求解线性方程组 ( 重要!!)

undefined


猜你喜欢

转载自blog.csdn.net/a13352912632/article/details/107754914