基础知识
MATLAB从1开始,C语言等其他语言从0开始。
赋值方法与其他语言相同。
a = 10
char(97)
str = " I love you "
num2str(pi) %将任何数字转换为对应的字符串
%输出ans ='3.1416'
矩阵
基本的赋值
A = [1 2 3; 4 5 6; 7 8 9]
%{
输出A =
1 2 3
4 5 6
7 8 9
%}
转置(行列互换)
B = A'
%即将原始矩阵的行变成新矩阵的列,原始矩阵的列变成新矩阵的行
按列顺序展开成一列
C = A(:)
%表示将矩阵 A 中的所有元素按列(列主序)展开成一个列向量 C。
逆矩阵
D = inv(A)
%逆矩阵是一个与原始矩阵相乘后得到单位矩阵的矩阵,前提是该矩阵必须是可逆的(即,其行列式不为零)。
生成0矩阵
E = zeros(10,5,3) %10行5列3层(一维二维三维)
三维矩阵赋值
E(:,:,1) = rand(10,5)
%将在三维数组 E 的第一个维度中的第一个切片(或称为第一个二维矩阵)中生成随机数并赋值。
E(:,:,2) = rand(10,5,'double')
%生成双精度随机数并赋值
E(:,:,1) = randn(10,5)
%产生标准正态分布的随机数
E(:,:,2) = randi([1, 100], 10, 5);
% 生成 1 到 100 范围内的随机整数
%': '表示选择该维度的所有元素。
元胞数组
MATLAB中特有的数据类型,是数组的类型。与普通的矩阵不同,元胞数组的每个元素可以是任何类型的数据,包括数字、文本、其他元胞数组、结构体等。
A = cell(1,6) %创建数组
C = {'apple', 42, [1, 2, 3]}; %创建数组并直接赋值
A{2} = eye(3) %赋值形式
B = A{5} %将A5中的数据(数组)取出赋给B
结构体
结构体(Structure,通常缩写为 “struct”)是一种复合数据类型,用于组织和存储多个不同类型的数据成员,每个数据成员都有一个字段名(Field Name)来标识它。结构体允许您将相关的数据聚合在一起,以便更方便地管理和访问这些数据。
person = struct('Name', 'John', 'Age', 30, 'City', 'New York');
name = person.Name; % 获取姓名字段的值
age = person.Age; % 获取年龄字段的值
关于使用()和{}区别的详细解释
books.name(1) %将返回结构体数组中第一个元素的name字段的值。这里的1表示数组的第一个元素。
books.name{1} %将返回第一个元胞中name字段的内容。{}表示对元胞数组的内容进行直接访问,而不是访问元胞本身。
这种区别在于,()
用于访问元胞数组本身(保留元胞封装),而 {}
用于访问元胞中的具体内容(去除元胞封装)。当你需要操作或提取元胞中的具体数据时,通常会使用 {}
。
我们举一个例子来说明:
C = {'Apple', 'Banana', 'Cherry'};
- 使用
C(1)
:- 这将返回一个新的元胞数组,该数组只包含原数组的第一个元素。
- 结果是一个包含单个元素的元胞数组,即
{'Apple'}
。 - 这意味着结果本身仍然是一个元胞数组。
- 当我们使用
C(1)
(模拟为[C[0]]
),结果是['Apple']
。这是一个包含一个元素的数组(类似于MATLAB中的元胞数组),其中该元素是字符串'Apple'
。(Python模拟)
- 使用
C{1}
:- 这将直接提取元胞数组中第一个元素的内容。
- 结果是一个字符串,即
'Apple'
。 - 这意味着我们获得的是元胞内部的数据,而不是元胞本身。
- 当我们使用
C{1}
(模拟为C[0]
),结果是'Apple'
。这是直接从元胞中提取出的字符串,不是一个元胞数组。
总结来说,()把某一个cell整体抽出,{}读取了某一cell里面的具体数据。
矩阵操作
A = [1 2 3 4 5 6] %赋值
B = 1:2:9 %该向量从1开始,以2为步长,增加到9(或最接近9的数,但不超过9)[1, 3, 5, 7, 9]
C = repmat(B,3,2) %重复某一矩阵,行3次,列2次
%{
B = [1, 3, 5, 7, 9]
C = repmat(B,3,2)
输出: [1, 3, 5, 7, 9, 1, 3, 5, 7, 9]
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9]
[1, 3, 5, 7, 9, 1, 3, 5, 7, 9]
%}
D = ones(2,4) %生成x行x列全1矩阵
矩阵的四则运算
C = A + B
D = A - B
%对应的地方相加相减
E = A * B
%传统的矩阵相乘
F = A .* B
%矩阵对应位置相乘
G = A / B
H = A ./ B
*传统矩阵相乘方法:
矩阵 A
矩阵 B
乘积 C 的元素 C[i, j] 计算公式
具体的乘积示例
矩阵的下标(矩阵中数据的定位)
A = magic(5)
B = A(2,3)
C = A(3,:)
D = A(:,4)
[m,n] = find(A > 20) %查找A矩阵中大于20值的下标,将值赋给m和n