Matlab基础教程(2)第三章 数组和向量

  • 3.1 MATLAB数组
    • 3.1.1 创建数组
    • 3.1.2 数组操作
      • 3.1.2.1 获取数组中的元素
      • 3.1.2.2 各类型数组操作
        • 1 数组算术操作
        • 2 数组逻辑运算
        • 3 使用库函数
        • 4 数组连接
        • 5 数组切片
        • 6 数组重排
        • 7 线性化数组
  • 3.2 MATLAB向量
    • 3.2.1 创建向量
    • 3.2.2 向量尺寸
    • 3.2.3 向量索引
      • 1 数值索引
      • 2 逻辑索引
    • 3.2.4 缩短向量
    • 3.2.5 向量操作
      • 1 算术操作
      • 2 逻辑操作
    • 3 应用库函数
    • 4 连接
    • 5 切片
  • 课后习题

3.1 MATLAB数组

3.1.1 创建数组

  • 函数 size() eg sz=size(A),将返回一个n维向量,其中包含数组每一维的大小。
  • 函数length() 返回数组的最大维数值

使用 “ ;”或者另起一行表明一行的结束,如 A = [2,5,7;1,2,43]。

  • 函数 zeros(m,n) 与函数 ones(m,n)
  • 函数 rand(m,n) 与函数 randn(m,n) 分别产生填充值为0到1的随机数的数组
  • 函数 diag()具有多种形式,最常见的是 diag(A),其中 A 为一数组,它将A中对角线上的元素作为向量返回;diag(V),其中V是一个向量,返回一条对角线为V的方阵。
  • 函数 magic() 它产生一个填充 1 到 m^2 之间数字的数组,其组织方式使得每一行、每一列以及对角线上的元素分别加起来等于相同的数。

3.1.2 数组操作

3.1.2.1 获取数组中的元素

● 获取数组中的元素: 可以通过将需要获取元素的索引值用括号括起来的方 式对数组中的元素进行寻址,其中第一个值为行索引值,第二个值为列索引值。

>>A=magic(4);
>>A(4,1);
>>A(2,3)=0;


如果在超出数组范围的位置写入,Matlab将自动对数组进行扩充。
如果在数组当前元素的位置和将要写入新数值的位置之间缺失数据
的话,将对缺失数据填充为0.

3.1.2.2 各类型数组操作

1 数组算术操作

2 数组逻辑运算

若两个数组的维数相同或者其中一个是标量, 对于两个数组中单个元素的逻辑操作就可以执行, 结果将是与原数组具有相同大小取布尔值的数组.

A=[1 2;4 3]; B=[0 6;3 2]; B>=A
ans= 0 1
0 0

A>=4 >>C=[1 2 3 4];
ans= 0 0 >> A>C
0 0 Error using >
Matrix dimensions must agree.

3 使用库函数


4 数组连接

5 数组切片
 将数组中的一部分移入另一个数组中:             B(<rangeBR>,<rangeBC>)=A(<rangeAR>,<rangeAC>);
每一切片数组的每一维数必须相等,或者A中切片大小为1×1;
如果执行这一语句之前B不存在的话,其中没有被显式赋值的位置将填充为0;
如果执行这一语句之前B存在的话,没有直接赋值的部分的值保持不变;

6 数组重排

● 对一种维数形式的数组重排为另外一种维数形式:
reshape(A,rows,cols,…)
Remark: reshape()并不会补充数据填充到空白位置,
数组A原始维数的乘积必须与新数组维数的乘积相等。

A=1:10; % 1*10
reshape(A,4,3) %%%error using reshape
reshape([A 0 0],4,3)
ans=
1 5 9
2 6 10
3 7 0
4 8 0

7 线性化数组

存储数组的内存块也是顺序排放的,数组按照列的顺序存放在内存中。

代码清单3-1 数组操作脚本

A = [2 5 7 3 ; 1 3 4 2]
[rows , cols] = size ( A )
odds = 1:2:cols
disp(‘odd columns of A using predefined indices’)
A(:,odds)
disp(‘odd columns of A using anonymous indices’)
A(end,1:2:end)
disp(‘put evens into odd values in a new array’)
B(:,odds)=A(:,2:2:end)
disp(‘set the even values in B to 99’)
B(1,2:2:end)=99
disp(‘find the small values in A’)
small=A<4
disp(‘add 10 to the small values’)
A(small) = A(small) + 10
disp(‘the can be done in one ugly operation’)
A(A<4) = A(A<4) + 10
small_index = find(small)
A(small_index) = A(small_index) + 100

3.2 MATLAB向量

3.2.1 创建向量

● 一、使用一系列长治来创建向量;

     (1)直接输入           (2)使用冒号输入某个范围内的数值              a : b : c (起始值:增量:结束值)      (3)linspace(a,b,c)             a: 起始值,b:终值, c:向量长度 (元素个数)                      (4)使用函数创建向量如zeros(),ones(), rand()

● 二、通过对已有向量进行操作产生新向量;

 ●   Remarks: 利用MATLAB窗口中的workspace查看变量,workspace给出的变量信息包括:变量名、变量值、变量类型利用MATLAB命令窗口中的who,whos命令查看变量

3.2.2 向量尺寸

3.2.3 向量索引

1 数值索引

2 逻辑索引

3.2.4 缩短向量

3.2.5 向量操作

1 算术操作

  当两向量长度相同或者其中之一为标量时,算术操作可以在两向量中的每一个元素上共同执行。A+BA-BA.*BA./BA.^a

2 逻辑操作

 当两个向量长度相同或者其中之一为标量时,可以在两向量中执行逐个元素的逻辑是操作,结果将是与原始向量长度相同的且取逻辑值的向量。
A=[2 5 7 3 1];  B=[0 6 5 3 2];
A>=5; A>=B;  C=[1 2 3];
A>C %%不能运算可以使用逻辑“与”和“或”操作将逻辑操作符组合称复杂的操作:&、|:对具有匹配尺寸的逻辑数组的单个逻辑值进行逐元素的匹配执行;&&、||:将单个逻辑结果结合起来;A=[true true false false]; B=[true false true false];A&B ;   A|B;C=[1 0 0]; A&C  %%显示出错●  注: 如果要得到对应逻辑向量中元素为真的向量元素索引值, 函数find()可以完成此项任务, 它需要输入一个逻辑值数组,然后输出取真值的元素所对应位置的向量.
●   例:>> A=[2 5 7 1 3];  A>4;>> a=find(A>4)a= 2    3>> A(a)ans=5  7

3 应用库函数

  • sum(V)/mean(V): 向量所有元素之和/均值;
  • min(V)/max(V): 返回向量V的最小/最大值以及该值在向量中出现的位置;
  • round(V), ceil(V), floor(V), fix(V): 将向量中所有数值中的小数部分去掉, 分别对应常规的舍入、向上舍入、向下舍入、向零舍入;
    • round:向最近的方向取整(四舍五入)
    • ceil: 向正无穷大方向取整(向上舍入)
    • floor: 向负无穷大方向取整(向下舍入)
    • fix: 向零方向取整(向零舍入)

4 连接

A=[B,C,D,…,X,Y,Z]A=[2 5 7];B=[1 3 5];[A,B][A, 5,B]

5 切片

切片(将一个向量中的一部分移入另外一个向量的一部分中)

B(<rangeB>)=A(<rangeA>)rangeB的大小必须与rangeA大小相同或者rangeA的大小为1;若执行此语句之前B不存在,其中没有被显式赋值的位置将自动用0填充;若执行此语句之前B存在,没有直接在rangeB范围内赋值的部分其值保持不变

代码清单 3-2 向量索引脚本

clear
clc %%清理前面的输出
A = [2,5,7,1,3,4];%%创建一个具有5个元素的向量A
odds = 1:2:length(A);%%读取向量A中奇数位置的数
disp(‘odd values of A using predifined indices’)
A(odds)%%读取向量A中奇数位置的数
disp(‘odd values of A using anonymous indices’)
A(1:2:end)%%读取向量A中奇数位置的数
disp(‘put evens into odd values in a new array’)
B(odds)=A(2:2:end)%%读取向量A偶数位置的数,其他无法读取的数用0代替。
disp(‘set the even values in B to 99’)
B(2:2:end)=99%%读取向量A偶数位置的数用99代替。
disp(‘find the small values in A’)
small=A<4%%逻辑语句 找到A中比4小的数并输出1,否则输出0
disp(‘add 10 to the small values’)
A(small) = A(small) + 10%%比4小的项+10
disp(‘the can be done in one ugly operation’)
A(A<4) = A(A<4) + 10%比4小的项+10

课后习题

##此代码为matlab中代码
%%    chapter 3%%    代码清单 3—1  数组操作脚本clear    %%清理变量
clc      %%清理前面的输出
A = [2 5 7 3 ; 1 3 4 2]    %%创建一个具有2*4的矩阵A
[rows , cols] = size ( A )    %%得到行数和列数
odds = 1:2:cols    %%创建向量odds,它包含了奇数列的索引值%%disp()函数可以在command窗口中显示内容
disp('odd columns of A using predefined indices')
A(:,odds)    %%取出A中的奇数列
disp('odd columns of A using anonymous indices')
A(end,1:2:end)    %%上一行命令的匿名实现
disp('put evens into odd values in a new array')
B(:,odds)=A(:,2:2:end)    %%将B中没有被赋值的元素填充为0
disp('set the even values in B to 99')
B(1,2:2:end)=99    %%将B中选中位置的元素赋值为99
disp('find the small values in A')
small=A<4    %%逻辑语句 找到A中比4小的数并输出1,否则输出0
disp('add 10 to the small values')
A(small) = A(small) + 10    %%比4小的项+10
disp('the can be done in one ugly operation')
A(A<4) = A(A<4) + 10    %%比4小的项+10
small_index = find(small)    %%运用函数find() 返回原数组线性化形式下索引值的列向量。
A(small_index) = A(small_index) + 100    %%%%比4小的项(前面已经找出对应位置)+100%%    代码清单 3—2  向量索引脚本clear    %%清理变量
clc    %%清理前面的输出
A = [2,5,7,1,3,4];    %%创建一个具有5个元素的向量A
odds = 1:2:length(A);    %%读取向量A中奇数位置的数
%%disp()函数可以在command窗口中显示内容
disp('odd values of A using predifined indices')
A(odds)    %%读取向量A中奇数位置的数
disp('odd values of A using anonymous indices')
A(1:2:end)    %%读取向量A中奇数位置的数(上面两行命令的匿名显示方式)
disp('put evens into odd values in a new array')
B(odds)=A(2:2:end)    %%读取向量A偶数位置的数,其他无法读取的数用0代替。
disp('set the even values in B to 99')
B(2:2:end)=99    %%读取向量A偶数位置的数用99代替。
disp('find the small values in A')
small=A<4    %%逻辑语句 找到A中比4小的数并输出1,否则输出0
disp('add 10 to the small values')
A(small) = A(small) + 10    %%比4小的项+10
disp('the can be done in one ugly operation')
A(A<4) = A(A<4) + 10    %比4小的项+10%%    chapter 3    课后习题代码%%    1    求y值为多少
x = [ 9 3 0 6 3]
y = mod((sqrt(length(((x+5).*[1 2 3 4 5]))*5)),3)   %% x中每个元素+5后 .*对应元素 求出其元素个数 除以三的余数%%    2    向量操作
vec=[4,5,2,8,4,7,2,64,2,57,2,45,7,43,2,5,7,3,3,6253,3,4,3,0,-65,-343]
%%    (1)    创建一个新的向量 vecR 使其为vec的转置
vecR=vec'    %%求vec的转置
%%    (2)    使vecB成为vec中的前半部分与后半部分互换的结果
a=length(vec);
vecB=[vec(a/2+1:a),vec(1:a/2)]
%%    (3)    vecS使其包含小于45的元素
b=find(vec<45);
vecS=vec(b)
%%    (4)    vec3S从vec中最后一个元素开始,并且间隔三个元素取一个元素,直到第一个为止
vecR=vec(end:-4:1)
%%    (5)    vecN中包含所有等于2/4的元素
vecN=find(vec==2|vec==4)
%%    (6)    vecG包含vec中去掉索引值为奇数且取值为2/4的元素后所有元素
c=vec(2:2:end);
vecG=c(find(c~=2&c~=4))%%    3    向量操作
nums1=[7,1,3,5,32,12,1,99,10,24];
nums2=[54,1,456,9,20,45,48,72,61,32,10,94,11];
nums3=[44,11,25,41,84,77,998,85,2,3,15];
%%    new_nums1、new_nums2、new_nums3,分别包含以上三个向量中从第一个元素开始且间隔取值的元素
new_nums1 = nums1(1:2:end)
new_nums2 = nums2(1:2:end)
new_nums3 = nums3(1:2:end)

matlab:Matlab基础教程 第三章 数组和向量相关推荐

  1. Python基础教程 | 第三章 字符串

    1. 基本字符串操作 标准序列操作:索引.分片.乘法. 成员资格.长度.最大最小值 >>> website = 'www.baidu.com' >>> websit ...

  2. matlab中任意两边之和大于第三边,MATLAB教程第三章.ppt

    <MATLAB教程第三章.ppt>由会员分享,可在线阅读,更多相关<MATLAB教程第三章.ppt(34页珍藏版)>请在人人文库网上搜索. 1.MATLAB程序语言设计, ,第 ...

  3. Matlab AppDesigner编程教程第1章——面向对象编程

    Matlab AppDesigner编程教程第1章--面向对象编程 文章目录 Matlab AppDesigner编程教程第1章--面向对象编程 前言 一.什么是面向对象编程 二.使用步骤 1.新建类 ...

  4. 软考 程序员教程-第三章 数据库基础知识

    软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...

  5. matlab最基础教程(六):编程习惯

    matlab最基础教程(六):编程习惯 前言:matlab的基本使用方法差不多介绍完了,确定问题类型(数值/符号),编程(函数/脚本)并运行即可.但具体编程过程中,良好的习惯非常重要,一方面便于调试, ...

  6. matlab最基础教程(二):变量类型与赋值

    matlab最基础教程(二):变量类型与赋值 前言:matlab解决问题的最基本思路是建立脚本文件,那么脚本文件的第一段就是定义一些变量,这和C语言等编程思想是一样的.matlab提供的变量类型很多, ...

  7. matlab最基础教程(四):常用的系统自带函数,符号变量与字符串篇

    matlab最基础教程(四):常用的系统自带函数,符号变量与字符串篇 前言:matlab字面意思是矩阵实验室,软件重点是数值变量的运算.所以在符号变量和字符串的运算上,功能并不强大,我用的也不是很多, ...

  8. C#图解教程(第三章)

    C#图解教程第三章 3.1 C#程序是一组类型声明 3.2 类型是一种模板 3.3 实例化类型 3.4 数据成员和函数成员 3.5预定义类型 3.6用户定义类型 3.7 栈和堆 3.7.1 栈 3.7 ...

  9. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  10. python基础教程第三版电子版-《python基础教程第三版》PDF高清完整版-免费下载...

    <python基础教程第3版>高清PDF下载地址:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 ...

最新文章

  1. MFC给按钮添加皮肤
  2. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现...
  3. Linux 的面试小题 8
  4. 服务器千兆网卡接百兆交换机不通_一文搞懂监控工程中百兆交换机和千兆交换机的区别在哪?...
  5. 自学Web前端有哪些误区?自学Web需要掌握哪些技术
  6. 最方便的字符设备驱动的写法
  7. Julia : 1亿条记录读取测试,及几个优化点
  8. EXCEL数组公式(3)---数组公式的基础应用,理解数组公式
  9. 柳夜熙又更新了,虚拟人的底层技术是什么?
  10. Allegro PCB gerber文件输出 + ODB++文件输出
  11. 破解各类加密文件密码
  12. Spark的下一代引擎-Project Tungsten启示录
  13. addition过程 sgnb_5G-NSA接入流程分析及问题定位四步法
  14. java.sql字符串拼成日期_sql字符串转换成日期
  15. ssh连接阿里云服务器报错 Server responded ”Algori thm negotiation failed.”
  16. 网站盈利模式分类详解
  17. java程序员语录_java程序员励志说说26条
  18. 教你玩转 sqlplus,工作效率提升 200%
  19. css如何在下拉框添加倒三角,CSS给选中元素增加倒三角形(示例代码)
  20. 将dblp中的文件导入到endnote中

热门文章

  1. 关于 C# dll文件的反编译获取源码
  2. 一、Quartus II软件的使用
  3. 按键精灵执行cmd命令_如何用cmd运行按键精灵脚本
  4. JSEclipse安装后无法打开js文件_火狐浏览器打开邮箱添加不了附件
  5. c# socket操作智嵌物联的网络继电器板
  6. Python常用中文分词库:jieba
  7. 如何恢复MAC苹果电脑系统数据文件恢复详细教程
  8. win10打开命令提示符
  9. 高数 | 【多元函数微分学】多元函数求极限方法总结
  10. 浅析视频云行业及实现技术