【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )

举报
韩曙亮 发表于 2022/01/11 01:18:17 2022/01/11
【摘要】 文章目录 一、元胞数组1、定义元胞数组2、生成单位阵3、生成幻方4、元胞数组元素赋值5、元胞数组元素赋值 二 二、元胞数组1、定义结构体2、小括号获取元胞数组子数组3、大括号获取元胞数组值 ...





一、元胞数组





1、定义元胞数组


元胞数组中的元素可以是不同类型的数据 ;

元胞数组定义 : 使用 cell 定义元胞数组 , 其中的两个参数分别是行数和列数 ;

% 元胞数组定义, 定义一个 23 列的元胞数组
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 维矩阵
% 开始的 32 分别代表 32 列
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. 元胞数组

% 元胞数组定义, 定义一个 23 列的元胞数组
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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。