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

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

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


使用两种方法来引用单元阵列的元素:

  • 封闭的索引在第一个 bracket (),是指一组单元格
  • 封闭的在大括号{},的索引单个单元格内的数据


括在第一支架的索引,它指的是单元格的集。

单元阵列索引平稳括号单元格集合。

例如:

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

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

ans = 
    'Red'    'Blue'
    [  1]    [   2]


同样可以用花括号“{ }”索引访问单元格的内容。

例如:

1. c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
2. c{1, 2:4}

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

ans =
   Blue
ans =
   Green
ans =
   Yellow


MATLAB冒号符号


MATLAB 中可以使用 “:” 来建立矢量、下标数组和指定的迭代,是最有用的 MATLAB 运算符之一。

下述例子建立了一个包括 1~10 的一个行向量:

1:10


MATLAB执行该语句,结果返回一个行向量,包含了从1到10的整数:

1. ans =
2.      1     2     3     4     5     6     7     8     9    10

如果想指定以外的一个增量值,例如:

100: -5: 50


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

1. ans =
2.    100    95    90    85    80    75    70    65    60    55    50

让我们再举一个例子:

0:pi/8:pi


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

ans =
  Columns 1 through 7
         0    0.3927    0.7854    1.1781    1.5708    1.9635    2.3562
  Columns 8 through 9
    2.7489    3.1416


可以使用冒号 “:” 运算符建立矢量指数来选择行、列或数组中的元素。

下表描述了其用于此目的(让我们有一个矩阵A):

格式 目的
A(:,j) 是A的第 j 列
A(i,:) 是A的第 i 行
A(:,:) 是等效的二维数组;对于矩阵,这与 A 相同
A(j:k) 是A(j),A(j + 1),...,A(k)
A(:,j:k) 是 A(:,j), A(:,j+1),...,A(:,k)
A(:,:,k) 是三维数组 A 的第 k 页
A(i,j,k,:) 是四维数组 A 中的矢量;矢量包括 A(i,j,k,1),A(i,j,k,2),A(i,j,k,3)等
A(:) 是 A 的所有要素,被视为单列;在赋值语句的左侧,A(:) 填充A,保留以前的形状;在这种情况下,右侧必须包含与A相同数量的元素。


详细例子


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

A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2)      % second column of A
A(:,2:3)    % second and third column of A
A(2:3,2:3)  % second and third rows and second and third columns


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

A =
     1     2     3     4
     4     5     6     7
     7     8     9    10
ans =
     2
     5
     8
ans =
     2     3
     5     6
     8     9
ans =
     5     6
     8     9


MATLAB数字


MATLAB 支持的数字类有很多,其中包括符号和无符号的整数及单精度和双精度浮点数。

默认情况下,MATLAB 存储所有数值为双精度浮点数。

MATLAB可以选择存储任何数字或数字为整数或单精度数字阵列。

MATLAB所有的数字类型支持基本的数组运算和数学运算。


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


MATLAB提供各种数字数据类型转换为以下功能:

函数 目的
double 转换为双精度数字
single 转换为单精度数
int8 转换为8位有符号整数
int16 转换为16位有符号整数
int32 转换为32位有符号整数
int64 转换为64位有符号整数
uint8 转换为8位无符号整数
uint16 转换为16位无符号整数
uint32 转换为32位无符号整数
uint64 转换为64位无符号整数


详细例子


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

x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5


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

x =
   39.9000   26.0250   47.1000
x =
   39.9000   26.0250   47.1000
x =
   38   23   45
x =
     38     23     45
x =
          38          23          45
x =
                   38                   23                   45


详细例子


对前面的例子进行扩展,建立一个脚本文件,输入下述代码:

x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)



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

x =
          38          23          45
x =
                   38                   23                   45
x = 
    [38]    [23]    [45]


最小和最大整数


MATLAB中使用函数 intmax() 和 intmin() 返回最大和最小的值,它可以表示所有类型的整数。

这两个功能整数数据类型作为参数,例如,intmax(int8) 或 intmin(int64) 最大值和最小值值,可以表示的整数数据类型并返回。


详细例子


下面的例子说明如何得到最小值和最大值的整数。

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

% displaying the smallest and largest signed integer data
str = 'The range for int8 is:
  %d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:
  %d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:
  %d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:
  %d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:
  %d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:
  %d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:
  %d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:
  %d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))


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

ans =
The range for int8 is:
  -128 to 127 
ans =
The range for int16 is:
  -32768 to 32767 
ans =
The range for int32 is:
  -2147483648 to 2147483647 
ans =
The range for int64 is:
  -9223372036854775808 to 9223372036854775807 
ans =
The range for uint8 is:
  0 to 255 
ans =
The range for uint16 is:
  0 to 65535 
ans =
The range for uint32 is:
  0 to 4294967295 
ans =
The range for uint64 is:
  0 to 1.844674e+19


MATLAB最小和最大浮点数


使用函数 realmax() 和 realmin() 返回的最大值和最小值,可以表示为浮点数。

这两个函数调用时的参数'单',返回的最大值和最小值值,可以代表单精度数据类型以及何时被称为'双'的参数,返回的最大值和最小值值,可以表示双精度数据类型。


详细实例


下面的例子说明如何获得最大和最小的浮点数。

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

% displaying the smallest and largest single-precision 
% floating w3cschool number
str = 'The range for single is:
  %g to %g and
   %g to  %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
    realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision 
% floating w3cschool number
str = 'The range for double is:
  %g to %g and
   %g to  %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
    realmin('double'), realmax('double'))


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

ans =
The range for single is:
  -3.40282e+38 to -1.17549e-38 and
   1.17549e-38 to  3.40282e+38
ans =
The range for double is:
  -1.79769e+308 to -2.22507e-308 and
   2.22507e-308 to  1.79769e+308


MATLAB字符串


本节我们学习如何在MATLAB中创建一个字符串。

例如:

my_string = 'w3cschool''在线教程'

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

my_string =
w3cschool在线教程


MATLAB 认为所有变量,数组和字符串被视为字符数组。

让我们使用命令检查上面创建的变量:

whos

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

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char


你可以使用数字转换函数,如 uint8 或 uint16 字符串中的字符转换成数字代码。

char 函数整数向量转换回字符:


详细例子


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

my_string = 'w3cschool''在线教程';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)  


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

str_ascii =
  Columns 1 through 14
   84  117  116  111  114  105   97  108   39  115   32   80  111  105
  Columns 15 through 16
  110  116
str_back_to_char =
w3cschool在线教程
str_16bit =
  Columns 1 through 10
     84    117    116    111    114    105     97    108     39    115
  Columns 11 through 16
     32     80    111    105    110    116
str_back_to_char =
w3cschool在线教程


详细例子


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

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                   'RN Tagore Cardiology Research Center')


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

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center


采取下述方式之一横向合并字符串:

  • 使用MATLAB串连运算,[],并用逗号或空格分隔输入字符串。这种方法保留任何尾随空格输入数组。
  • 使用字符串连接函数 strcat。此方法删除尾随空格输入


详细例子


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

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)


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

profile =
Zara Ali                             , Sr. Surgeon                          , R N Tagore Cardiology Research Center
profile =
Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center



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

热门文章

最新文章