matlab-day03

MATLAB向量

我们可以创建两种 MATLAB 向量类型:

行向量

列向量

MATLAB 行向量:
创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。

% 行向量
r = [1 2 3 4 5 6];
disp(r);
r2 = [7, 4, 5, 6, 77];
disp(r2)

MATLAB 列向量:
创建列向量括在方括号中的元素的集合,使用分号来分隔的元素。

% 列向量
r3 = [34; 23; 44; 44];
disp(r3)

引用向量元素

  • 可以参照的向量元素的几种方式中的一种或多种。ith 一个矢量v的分量被称为v(i)。
  • 当引用一个冒号,一个向量,其例如为v(😃,该载体上的所有组件的被列出。
  • MATLAB允许你选择一个范围从向量的元素。

例如:

% 引用(访问元素)  名字(索引)  索引从1开始
%访问 r2的第一个值
disp(r2(1));
%如果使用 名(:)  相相当于 python切片的全选
disp(r3(:));
% 切片  截取一部分  左闭右闭
sub_v = r(1:4);
disp(sub_v);

MATLAB向量的加法和减法

在 MATLAB 中当进行两个向量的加法与减法的时候,这两个向量的元素必须有相同的类型和数量。

% 向量运算
A = [1, 2, 3, 4, 5];
B = [6, 7, 8, 9, 10];
J = A + B;
J2 = A - B;
disp(J);
disp(J2);

MATLAB标量向量乘法

MATLAB标量乘法:让一个数字乘以一个向量。
标量乘法会产生相同类型的新的一个向量,原先的向量的每个元素乘以数量。

% 向量的标量乘法
v = [12, 3, 4, 5];
m = 5 * v;
disp(m);

MATLAB转置向量

MATLAB中转置操作能够将一个行向量改变成一个列向量,反之亦然。

MATLAB中转置操作使用一个单引号(')来表示。

% 转置向量
r = [1, 2, 3, 4];
tr = r';
disp(tr)
cr = [2;4;5;6];
disp(cr');

追加向量

MATLAB 允许在原有的向量中附加向量,共同创造新的向量。

如果有两个行向量 r1 和 r2 这两个行向量中各有 n 和 m 个元素,现在创建行向量 r 并将n和m个元素都放在行向量 r 中,通过附加这些载体

% 追加向量
r1 = [1, 2, 3];
r2 = [4, 5, 6];
res = [r1, r2];
disp(res);
res2 = [r1; r2];%矩阵
disp(res2);
r3 = [4; 5; 7];
r4 = [2; 6; 9; 0];
disp([r3; r4]);

MATLAB向量的模

在这里插入图片描述

% 向量的模
vv = 1: 2: 20;
disp(vv);
sqrtvv = vv .* vv;
disp(sqrtvv);
dp = sum(sqrtvv);
resMo = sqrt(dp);
disp(resMo);

MATLAB向量点积

MATLAB 中两个向量的点积 a = (a1, a2, …, an) and b = (b1, b2, …, bn) 由以下给定:

a.b = ∑(ai.bi)

下述函数可以计算两个向量 a 和 b 的点积:

dot(a, b);


%点积
dv1 = [1, 2, 3];
dv2 = [4, 5, 6];
dps = dot(dv1, dv2);
disp(dps);

MATLAB等差元素向量

当一个向量中的元素过多,同时向量的各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号(😃 来生成等差元素向量。

在 MATLAB 中如何建立一个等差元素向量?解决方法如下。

要建立一个矢量 v 带的第一个元素 f,最后一个元素 l 和元素之间的区别是任何真正的数 n,可以这样写:

v = [f : n : l]

% 向量的等差元素
% v  = [f: n : l];
v = [1: 3: 30];
vvv = v.^2;
disp(v);
disp(vvv);

MATLAB矩阵

在MATLAB中创建矩阵有以下规则:

矩阵元素必须在 “[ ]” 内;
矩阵的同行元素之间用空格(或 “,”)隔开;
矩阵的行与行之间用 “;”(或回车符)隔开;
矩阵的元素可以是数值、变量、表达式或函数;
矩阵的尺寸不必预先定义。

matrix1 = [1, 2, 3; 4, 5, 6; 7, 8, 9];
disp(matrix1);

MATLAB引用一个矩阵的元素
如果要引用 mth 行和 nth 列的一个元素,写法如下:

mx(m, n);

disp(matrix1(2,2));  % 索引从1开始
  • 取列
% 最后一列
disp(matrix1(:, 3));
  • 列切片
% 前两列
disp(matrix1(:, 1:2));
  • 行列切片
% [7, 8; 10, 11]子矩阵
disp(matrix1(3:4, 1:2));

MATLAB删除行或列矩阵
可以删除整行或整列的矩阵,只要分配一组空方括号 [ ] 给该行或列。
基本上,[ ] 表示一个空数组。

% 删除第二行
matrix2 = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];
matrix2(2, :) = [];
disp(matrix2);
% 删除最后2列
matrix3 = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];
matrix3(:,2:3) = [];
disp(matrix3);

建立一个3-3的矩阵 m,并把矩阵 m 中的第二行和第三行复制两次,这样就能够建立一个4×3的矩阵

m = [1, 2, 3; 4, 5, 6; 7, 8, 9];
new_mat = m([2,3,2,3], :)
disp(new_mat)

MATLAB矩阵的加法和减法

MATLAB矩阵可以有加法和减法的操作,但是两个操作数的矩阵必须具有相同的行数和列数。

%加减法
A=[1,3,5;2,4,6];
B=[7,9,11;8,10,12];
disp(A+B);
disp(A-B);

MATLAB矩阵标量操作

MATLAB矩阵的标量操作就是加,减,乘或者除以一个数字矩阵。

添加到具有原始矩阵的每个元素的行和列,相减,乘或除以数相同数量的标量运算会产生一个新的矩阵 /


%标量操作 + - * /
disp(3*A);
disp(A/4);
disp(A+2);
disp(A-1);


MATLAB矩阵的转置

MATLAB中矩阵的转置操作是用一个单引号(')表示的,该操作能够切换一个矩阵的行和列。

%转置'
disp(A');


MATLAB串联矩阵

MATLAB中使用一对中括号“[ ]”,能够将两个矩阵连接起来,创建出一个新矩阵。

MATLAB串联矩阵的两种类型:

水平串联:要进行连接的两个矩阵是使用逗号 “,” 分隔开的。

垂直串联:要进行连接的两个矩阵是使用分号 “;” 分隔开的。

%串联矩阵  水平,  垂直;
disp([A,[2,2;4,4]]);
disp([[1,2,3];B]);


MATLAB矩阵乘法

MATLAB中如果有两个矩阵 A 和 B ,其中 A 是 mn 矩阵,B 是 np 矩阵,那么他们相乘能够产生一个 m*p 的矩阵 C。

MATLAB矩阵乘法只发生在矩阵 A 的列数的数量等于矩阵 B 的行数的矩阵乘法中,具有相应的列中的第二矩阵乘以第一矩阵中的行的元素。

比如,第(i,j)个位置中的每个元素,在所得的矩阵 C 中,是在第 i 行的第一矩阵具有第二矩阵的第 j 列中的相应元素的产品的元素的总和。

在 MATLAB 中,矩阵乘法使用*运算符。

%乘法
disp([1,2,3;4,5,6]*[1,1;2,2;1,1]);

MATLAB逆矩阵

MATLAB中矩阵A的逆矩阵被记为 A−1 ,下面的关系成立:

AA−1 = A−1A = 1

MATLAB中不是每个矩阵都有逆矩阵的,比如一个矩阵的行列式是零的话,则矩阵的逆就不存在,这样的矩阵是奇异的。
MATLAB中,逆矩阵的计算使用 inv 函数:逆矩阵A是inv(A).

a = [1, 2, 3; 2, 3, 4; 1, 2, 5];
disp(inv(a));
res = inv(a);
disp(a*res);

在这里插入图片描述

MATLAB中的特殊阵列

MATLAB中会使用一些函数来建立一些特殊的阵列,对于所有这些函数,一个参数创建一个正方形阵列,双参数创建矩形阵列。

使用 zeros() 函数建立一个元素为零的数组:

zeros(5)
ones(4,3)
eye(4)

使用 rand() 函数建立一个数组(0,1)上均匀分布的随机数:

rand(3, 5) % 3行5列

MATLAB多维数组
在MATLAB中,一个阵列如果具有两个以上的维度则被称为多维数组。

在MATLAB中的多维数组是正常的两维矩阵的延伸。

MATLAB中需要先创建一个二维数组然后对该二维数组进行扩展,这样才能生成一个多维数组

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值