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



目录
相关文章
|
23天前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
22 1
|
1月前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
37 0
matlab--------矩阵重构,重新排列的相关函数说明
|
1月前
|
索引
matlab日常学习-------矩阵
matlab日常学习-------矩阵
23 0
|
22天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
15 0
|
22天前
雷达模糊函数及MATLAB仿真(一)
雷达模糊函数及MATLAB仿真
25 0
|
1月前
|
算法
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
26 0
|
2月前
|
机器学习/深度学习 算法
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
|
3月前
【数值分析】迭代法求方程的根(附matlab代码)
【数值分析】迭代法求方程的根(附matlab代码)

热门文章

最新文章