MATLAB学习笔记1

基础知识

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'};
  1. 使用 C(1)
    • 这将返回一个新的元胞数组,该数组只包含原数组的第一个元素。
    • 结果是一个包含单个元素的元胞数组,即 {'Apple'}
    • 这意味着结果本身仍然是一个元胞数组。
    • 当我们使用 C(1)(模拟为 [C[0]]),结果是 ['Apple']。这是一个包含一个元素的数组(类似于MATLAB中的元胞数组),其中该元素是字符串 'Apple'。(Python模拟)
  2. 使用 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

A = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}

矩阵 B

B = \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix}

乘积 C 的元素 C[i, j] 计算公式

C[i, j] = \sum_{k=1}^{n} A[i, k] \times B[k, j]

具体的乘积示例

C = \begin{bmatrix} a_{11}b_{11} + a_{12}b_{21} & a_{11}b_{12} + a_{12}b_{22} \\ a_{21}b_{11} + a_{22}b_{21} & a_{21}b_{12} + a_{22}b_{22} \end{bmatrix}

矩阵的下标(矩阵中数据的定位)

A = magic(5)
B = A(2,3)
C = A(3,:)
D = A(:,4)
[m,n] = find(A > 20) %查找A矩阵中大于20值的下标,将值赋给m和n
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇