MATLAB学习第八天(数组,符号,函数)上

简介: MATLAB学习第八天(数组,符号,函数)

目录

MATLAB数组

MATLAB中的特殊阵列

MATLAB幻方

MATLAB多维数组

详细例子

MATLAB数组函数

详细示例

MATLAB数组排序

MATLAB单元阵列

注意

详细例子

MATLAB在单元格上阵列访问数据

MATLAB冒号符号

详细例子

MATLAB数字

MATLAB各种数字数据类型的转换

详细例子

详细例子

最小和最大整数

详细例子

MATLAB最小和最大浮点数

详细实例

MATLAB字符串

详细例子

MATLAB矩形字符数组

详细例子

详细例子

将字符串组合成单元格数组

详细例子

MATLAB中的字符串函数

详细例子

格式化字符串

加入字符串

查找和替换字符串

比较字符串

MATLAB函数

详细例子

MATLAB匿名函数

详细例子

主要函数和子函数

详细例子

MATLAB嵌套函数

详细例子

MATLAB私有函数

详细例子

MATLAB全局变量

详细例子



MATLAB数组


之前,我们讨论了很多关于MATLAB向量和矩阵的知识,在本章中,我们将讨论多维数组。在MATLAB中所有的数据类型的变量是多维数组,向量是一个一维阵列,矩阵是一个二维数组。

首先,我们先来看一些特殊类型的数组。


MATLAB中的特殊阵列


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

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

例如:

zeros(5)

MATLAB 执行上述语句,返回以下结果:

ans =
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0


使用 ones() 函数建立一个数组:

例如:

ones(4,3)


MATLAB执行上述语句,返回以下结果:

ans =
     1     1     1
     1     1     1
     1     1     1
     1     1     1


使用 eye() 函数创建一个矩阵:

例如:

eye(4)


MATLAB执行上述语句,返回以下结果:

ans =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1


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

例如:

rand(3, 5)


MATLAB执行上述语句,返回以下结果:

ans =
    0.8147    0.9134    0.2785    0.9649    0.9572
    0.9058    0.6324    0.5469    0.1576    0.4854
    0.1270    0.0975    0.9575    0.9706    0.8003


MATLAB幻方


产生相同的总和,当它的元素加入逐行,逐列或对角线幻方是一个正方形。

使用 magic() 函数创建一个幻方阵列,它需要一个单数的参数,该参数必须是一个大于或等于3的标量。

例如:

magic(4)


MATLAB执行上述语句,返回以下结果:

ans =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1


MATLAB多维数组


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

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

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


例如,我们先建立一个二维数组a。

a = [7 9 5; 6 1 9; 4 3 2]


MATLAB执行上述语句,返回以下结果:

a =
     7     9     5
     6     1     9
     4     3     2


数组 a 是一个 3x3 阵列,通过提供的值,我们可以添加一个第三维,例如:

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

MATLAB执行上述语句,返回以下结果:

a(:,:,1) =
     7     9     5
     6     1     9
     4     3     2
a(:,:,2) =
     1     2     3
     4     5     6
     7     8     9


同样,我们也可以使用 ones(), zeros() 或 rand() 函数建立多维数组。

例如:

b = rand(4,3,2)

MATLAB执行上述语句,返回以下结果:

b(:,:,1) =
    0.0344    0.7952    0.6463
    0.4387    0.1869    0.7094
    0.3816    0.4898    0.7547
    0.7655    0.4456    0.2760
b(:,:,2) =
    0.6797    0.4984    0.2238
    0.6551    0.9597    0.7513
    0.1626    0.3404    0.2551
    0.1190    0.5853    0.5060


还能够使用 cat() 函数来建立多维数组,它结合沿着指定的维度的数组列表:

cat() 函数的语法是:

B = cat(dim, A1, A2...)


注意:

  • B 是新建的数组;
  • A1, A2, ... 是要连接的阵列;
  • dim 是一起串联阵列的维度。


详细例子


在MATLAB中建立一个脚本文件,输入下述代码:

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])


运行该文件时,显示结果:

c(:,:,1) =
     9     8     7
     6     5     4
     3     2     1
c(:,:,2) =
     1     2     3
     4     5     6
     7     8     9
c(:,:,3) =
     2     3     1
     4     7     8
     3     9     0


MATLAB数组函数


MATLAB提供以下功能进行排序,旋转,置乱,重塑或移动数组的内容。

函数 目的
length 矢量长度或最大阵列尺寸
ndims 数组维数
numel 数组元素的数目
size 数组维度
iscolumn 确定输入是否是列向量
isempty 确定数组是否为空
ismatrix 确定输入是否为矩阵
isrow 确定输入是否为行向量
isscalar 确定输入是否为标量
isvector 确定输入是否为矢量
blkdiag 从输入参数构造块对角矩阵
circshift 循环移位
ctranspose 复数共轭转置
diag 矩阵的对角矩阵和对角线
flipdim 沿指定维度翻转数组
fliplr 从左到右翻转矩阵
flipud 将矩阵向下翻转
ipermute n-维阵列的反置换维数
permute 重新排列 N 维数组的维数
repmat 复制和平铺数组
reshape 重塑数组
rot90 旋转矩阵90度
shiftdim 移位维度
issorted 确定集合元素是否按排序顺序排列
sort 按升序或降序对数组元素进行排序
sortrows 按升序对行排序
squeeze 删除单维度
transpose 转置
vectorize 矢量化表达式


详细示例


上述的一些函数将由下列例子说明。

长度,尺寸和数量的元素:

在MATLAB中建立一个脚本文件,输入下述代码:

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)  % length of x vector
y = rand(3, 4, 5, 2);
ndims(y)    % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)   % no of elements in s


运行该文件,显示以下结果:

ans =
     8
ans =
     4
ans =
    23


循环移位的数组元素:

在MATLAB中建立一个脚本文件,输入下述代码:

a = [1 2 3; 4 5 6; 7 8 9]  % the original array a
b = circshift(a,1)  %  circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 
                         % and second dimension values to the left % by 1.


运行该文件,显示以下结果:

a =
     1     2     3
     4     5     6
     7     8     9
b =
     7     8     9
     1     2     3
     4     5     6
c =
     8     9     7
     2     3     1
     5     6     4


MATLAB数组排序


在MATLAB中建立一个脚本文件,输入下述代码:

v = [ 23 45 12 9 5 0 19 17]  % horizonal vector
sort(v)   %sorting v
m = [2 6 4; 5 3 9; 2 0 1]  %  two dimensional array
sort(m, 1)   % sorting m along the row
sort(m, 2)   % sorting m along the column


运行该文件,显示以下结果:

v =
    23    45    12     9     5     0    19    17
ans =
     0     5     9    12    17    19    23    45
m =
     2     6     4
     5     3     9
     2     0     1
ans =
     2     0     1
     2     3     4
     5     6     9
ans =
     2     4     6
     3     5     9
     0     1     2


MATLAB单元阵列


单元阵列的阵列中每个单元格可以存储不同的维度和数据类型的数组的索引单元格。

单元格函数用于建立一个单元阵列。

单元格函数的语法如下:

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)


注意


  1. C 是单元阵列;
  2. dim 是一个标量整数或整数向量,指定单元格阵列C的尺寸;
  3. dim1, ... , dimN 是标量整数指定尺寸的C;
  4. obj 是以下内容之一
  • Java 数组或对象
  • .NET阵列 System.String 类型或 System.Object


详细例子


在MATLAB中建立一个脚本文件,输入下述代码:

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}


运行该文件,显示以下结果:

c = 
    'Red'    'Blue'    'Green'    'Yellow'    'White'
    [  1]    [   2]    [    3]    [     4]    [    5]



目录
相关文章
|
2月前
|
Python Windows
SciPy 教程 之 SciPy Matlab 数组 1
本教程介绍了如何使用 SciPy 的 `scipy.io` 模块处理 Matlab 数组。通过 `savemat()` 方法可以将数据导出为 Matlab 格式的文件,而 `loadmat()` 方法则用于从 Matlab 文件中导入数据。示例展示了如何导出和导入一维数组,并解决了导入时数组维度增加的问题。
23 1
|
3月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
110 2
|
3月前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
81 1
|
3月前
|
存储 机器学习/深度学习 数据可视化
MATLAB脚本与函数
【10月更文挑战第4天】本文介绍了MATLAB脚本与函数的基本概念及编写方法,涵盖脚本和函数的创建、运行及优缺点,通过示例帮助初学者快速上手。同时,文章还涉及数据类型、控制结构、数据可视化、文件操作、错误处理等内容,提供了丰富的示例和学习资源,助力初学者逐步掌握MATLAB编程。
137 3
|
8月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
matlab学习(二)
matlab学习(二)
|
5月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
73 1
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ>0增强集成效果,提高预测准确性和系统稳健性。
|
7月前
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
8月前
|
算法 数据安全/隐私保护
matlab学习(三)
matlab学习(三)
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
245 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码

热门文章

最新文章