【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )
一、元胞数组
1、定义元胞数组
元胞数组中的元素可以是不同类型的数据 ;
元胞数组定义 : 使用 cell 定义元胞数组 , 其中的两个参数分别是行数和列数 ;
% 元胞数组定义, 定义一个 2 行 3 列的元胞数组
array = cell(2,3)
- 1
- 2
执行结果 :
2、生成单位阵
eye 函数用于 生成 n n n 阶单位阵 ;
% 生成单位阵
eye(3)
- 1
- 2
运行效果 :
3、生成幻方
magic 函数用于生成 n n n 阶幻方 ;
3 3 3 阶幻方由 9 9 9 个数字组成 3 × 3 3 \times 3 3×3 矩阵 , 横向 , 纵向 , 倾斜方向 , 三个方向上的 3 3 3 个数字的总和是相同的 ;
% 生成幻方
magic(3)
- 1
- 2
运行效果 :
4、元胞数组元素赋值
matlab 中的元胞数组数组索引值从 1 开始 , 主流编程语言 C/C++/Java/Python 等都是从 0 开始 ;
array{2} 指的是元胞数组第 2 个元素 ;
matlab 的二维数组索引优先从列开始 , 第一列, 第二列… , 因此 array{2} 是第一列第二个 ;
代码示例 :
% eye(3) 生成一个 3x3 对角线数值为 1 的单位矩阵
% matlab 中的索引值从 1 开始 , 主流编程语言 C/C++/Java/Python 等都是从 0 开始
% array{2} 指的是元胞数组第 2 个元素
% matlab 的二维数组索引优先从列开始 , 第一列, 第二列...
% 因此 array{2} 是第一列第二个
array{2} = eye(3)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
运行效果 :
5、元胞数组元素赋值 二
为第 5 个元素赋值幻方 , 第 5 个元素是第三列第一个元素 ;
代码示例 :
% 为第 5 个元素赋值幻方
% 第 5 个元素是第三列第一个元素
array{5} = magic(3)
- 1
- 2
- 3
执行效果 :
二、元胞数组
1、定义结构体
结构体使用 struct 关键字定义 , 在括号 " ( ) " 之间 , 输入结构体内容 , 结构体中的内容由键值对组成 ;
% 结构体
students = struct('name', {{'Tom', 'Jerry'}}, 'age', [12, 18])
- 1
- 2
执行效果 : students 结果是 1x1 struct 结构体 ;
获取结构体 name 对应的值 , 取出的是 1x2 的 cell 元胞数组 ;
% 结构体中的 name 对应的值 , 是 1x2 的 cell
students.name
- 1
- 2
2、小括号获取元胞数组子数组
使用小括号 + 索引值 , 取出元胞数组中的元素 , 结果是子元胞数组 ;
% 结构体中的 name 对应的值的第 1 个元素 , 是 1x1 的 cell
% 使用括号取出的是 cell
students.name(1)
- 1
- 2
- 3
执行效果 :
3、大括号获取元胞数组值
使用大括号 + 索引值 , 取出元胞数组中的元素 , 结果是元胞数组中的值 ;
% 结构体中的 name 对应的值的第 1 个元素的值 , 是字符串
% 使用大括号取出的是数据值
students.name{1}
- 1
- 2
- 3
执行效果 :
三、代码示例
%% 注释
% 普通注释
%% 1. 数字
1 + 2
2 - 1
2 * 3
3 / 2
%% 2. 字符和字符串
s= 'a'
str = 'Hello Woirld !'
% 获取字符 ASCII 码
abs(s)
% 字符
char(65)
% 数字转字符串
num2str(65)
% 计算字符串长度, 包括空格
length(str)
%% 3. 矩阵
% 定义矩阵, 行之间的元素使用 空格 或 逗号隔开 , 每行之间使用分号隔开 ;
A = [1,2,3; 4,5,6; 7,8,9;]
% 定义矩阵 B , 矩阵值是 A 的转置矩阵
B = A'
% 将矩阵按照列放到一列中 , 依次是第一列,第二列 ...
C = A(:)
% 逆矩阵, 只有方阵才能求逆矩阵
D = inv(A)
% 生成 0 矩阵 , 最后一个 3 代表 3 维矩阵
% 开始的 3 和 2 分别代表 3 行 2 列
E = zeros(3, 2, 3)
% 随机生成均匀分布的随机数, 0 ~ 1 区间中
E(:,:,1) = rand(3, 2)
% 随机生成均匀分布的随机整数, 0 ~ 20 开区间中
E(:,:,2) = randi(20, 3, 2)
% 随机生成正太分布的随机数, 0 ~ 1 区间中
E(:,:,3) = randn(3, 2)
%% 4. 元胞数组
% 元胞数组定义, 定义一个 2 行 3 列的元胞数组
array = cell(2,3)
% 生成单位阵
eye(3)
% 生成幻方
magic(3)
% eye(3) 生成一个 3x3 对角线数值为 1 的单位矩阵
% matlab 中的索引值从 1 开始 , 主流编程语言 C/C++/Java/Python 等都是从 0 开始
% array{2} 指的是元胞数组第 2 个元素
% matlab 的二维数组索引优先从列开始 , 第一列, 第二列...
% 因此 array{2} 是第一列第二个
array{2} = eye(3)
% 为第 5 个元素赋值幻方
% 第 3 个元素是第三列第一个元素
array{5} = magic(3)
%% 5. 结构体
% 结构体
students = struct('name', {{'Tom', 'Jerry'}}, 'age', [12, 18])
% 结构体中的 name 对应的值 , 是 1x2 的 cell
students.name
% 结构体中的 name 对应的值的第 1 个元素 , 是 1x1 的 cell
% 使用括号取出的是 cell
students.name(1)
% 结构体中的 name 对应的值的第 1 个元素的值 , 是字符串
% 使用大括号取出的是数据值
students.name{1}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/115720531
- 点赞
- 收藏
- 关注作者
评论(0)