【003.Matlab基础 数组】
来源:互联网 发布:大张伟 天天向上 知乎 编辑:程序博客网 时间:2024/06/06 11:05
数值是Matlab进行计算和处理的核心内容之一,出于快速计算的需要,Matlab总把数组看作存储和运算的基本单元,标量数据也被看作是(1×1)的数组
一维数组的创建
>> format compact>> A1=[0 pi 0.5*pi 0.7 1.5]A1 = 0 3.1416 1.5708 0.7000 1.5000>> A2=0:0.5:3A2 = 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000>> A3=linspace(1,6,7)A3 = 1.0000 1.8333 2.6667 3.5000 4.3333 5.1667 6.0000>> A4=logspace(1,6,7)A4 = 1.0e+06 * 0.0000 0.0001 0.0005 0.0032 0.0215 0.1468 1.0000
- 直接输入法:可以直接通过空格、逗号和分号来分隔数组元素,在数组中输入任意元素,生成一维数组
- 步长生成法:
x=a:inc:b ,a 和b 为一维向量数组的起始数值和终止数值,inc 为数组的间隔步长;如果a 和b 为整数时,省略inc 可以生成间隔为1的数列。inc 也可以采用负数。- 等间距线形生产方法:
x=linspace(a,b,n) ,这种方法采用函数在a 和b 之间的区间内得到n 个线性采样数据点。- 等间距对数生成方法:
x=logspace(a,b,n) ,在设定采样点总个数n 的情况下,采用常用的对数计算得到n 个采样点数据值。
访问数组内容
>> x=linspace(1,6,7)x = 1.0000 1.8333 2.6667 3.5000 4.3333 5.1667 6.0000>> x(5) %索引访问数组元素ans = 4.3333>> x(2:5) %访问一块数据ans = 1.8333 2.6667 3.5000 4.3333>> x(3:end) %访问一块数据ans = 2.6667 3.5000 4.3333 5.1667 6.0000>> x(1:2:7) %构造访问数组ans = 1.0000 2.6667 4.3333 6.0000>> x([1,4,6,3,3,3,2,2,2,2]) %直接构造访问数组ans = 1.0000 3.5000 5.1667 2.6667 2.6667 2.6667 1.8333 1.8333 1.8333 1.8333>> x([1 4 6 3 3 3 2 2 2 2 ]) %直接构造访问数组ans = 1.0000 3.5000 5.1667 2.6667 2.6667 2.6667 1.8333 1.8333 1.8333 1.8333
一维数组可以是一个行向量,也可以是一列多行的列向量。在定义的过程中,如果元素之间通过“;”分隔元素,那么生成的向量是列向量;而通过空格或逗号分隔的元素则为行向量。列向量和行向量之间可以通过转置操作“’”来进行相互转化。如果一维数组元素是数组,那么经过转置操作后,得到的是复数的共轭转置结果,而采用点-共轭转置操作时得到的是转置数组
>> A=[1;2;3;4;5]A = 1 2 3 4 5>> B=A'B = 1 2 3 4 5>> C=linspace(1,10,5)C = 1.0000 3.2500 5.5000 7.7500 10.0000>> C=linspace(1,10,5)'C = 1.0000 3.2500 5.5000 7.7500 10.0000>> Z=A+C*IUndefined function or variable 'I'. Did you mean:>> Z=A+C*iZ = 1.0000 + 1.0000i 2.0000 + 3.2500i 3.0000 + 5.5000i 4.0000 + 7.7500i 5.0000 +10.0000i>> Z1=Z'Z1 = 1.0000 - 1.0000i 2.0000 - 3.2500i 3.0000 - 5.5000i 4.0000 - 7.7500i 5.0000 -10.0000i>> Z2=Z.'Z2 = 1.0000 + 1.0000i 2.0000 + 3.2500i 3.0000 + 5.5000i 4.0000 + 7.7500i 5.0000 +10.0000i
多维数组的创建
二维数组(即矩阵)的创建
- 直接输入二维数组元素来创建
- 通过Array Editor来输入二维数组
- 对于大规模数据,可以通过数据表格方式来输入,可单击选择空间的图标选中已经编写好的矩阵数据文件后,导入到工作空间中。
- 可以通过Matlab所提供的其他函数来生成二维数组。
>> clear>> A=[1 2 3 4;linspace(0,5,4);1:2:7;3:7]Error using vertcatDimensions of matrices being concatenated are not consistent. >> A=[1 2 3 4;linspace(0,5,4);1:2:7;3:6]A = 1.0000 2.0000 3.0000 4.0000 0 1.6667 3.3333 5.0000 1.0000 3.0000 5.0000 7.0000 3.0000 4.0000 5.0000 6.0000>> B=[123]B = 123>> B=[1 2 3 % Shift+回车 4 5 6 7 8 9]B = 1 2 3 4 5 6 7 8 9
多维数组创建
多维数组(
- 直接创建法。可选择一些内置函数来创建,如zeros、ones、rand、randn等。
- 通过直接索引的方法进行创建。
- 使用reshape和repmat将二维数组转换为三维数组。
- 使用cat函数将低维数组转化为高维数组
>> A=zero(3,4,2)Undefined function 'zero' for input arguments of type 'double'. >> A=zeros(3,4,2)A(:,:,1) = 0 0 0 0 0 0 0 0 0 0 0 0A(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0>> B=zeros(2,3)B = 0 0 0 0 0 0>> B(:,:,2)=ones(2,3)B(:,:,1) = 0 0 0 0 0 0B(:,:,2) = 1 1 1 1 1 1>> B(:,:,3)=4B(:,:,1) = 0 0 0 0 0 0B(:,:,2) = 1 1 1 1 1 1B(:,:,3) = 4 4 4 4 4 4>> C=reshape(B,2,9)C = 0 0 0 1 1 1 4 4 4 0 0 0 1 1 1 4 4 4>> C=(B(:,:,1)B(:,:,2)B(:,:,3)) C=(B(:,:,1)B(:,:,2)B(:,:,3)) |Error: Unexpected MATLAB expression.Did you mean:>> C = [B(:,:,1) B(:,:,2) B(:,:,3)]C = 0 0 0 1 1 1 4 4 4 0 0 0 1 1 1 4 4 4>> reshape(C,2,3,3)ans(:,:,1) = 0 0 0 0 0 0ans(:,:,2) = 1 1 1 1 1 1ans(:,:,3) = 4 4 4 4 4 4>> reshape(C,[3,2,3])ans(:,:,1) = 0 0 0 0 0 0ans(:,:,2) = 1 1 1 1 1 1ans(:,:,3) = 4 4 4 4 4 4>> C=[1 2 3 4 5 6 7 8 9;10 11 12 13 14 14 16 17 18]C = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 14 16 17 18>> reshape(C,[3,2,3])ans(:,:,1) = 1 11 10 3 2 12ans(:,:,2) = 4 14 13 6 5 14ans(:,:,3) = 7 17 16 9 8 18>> D=ones(3,2)D = 1 1 1 1 1 1>> repmat(D,[1,2,3])ans(:,:,1) = 1 1 1 1 1 1 1 1 1 1 1 1ans(:,:,2) = 1 1 1 1 1 1 1 1 1 1 1 1ans(:,:,3) = 1 1 1 1 1 1 1 1 1 1 1 1>> D=[1 2 3;4 5 6]'D = 1 4 2 5 3 6>> repmat(D,[1,2,3])ans(:,:,1) = 1 4 1 4 2 5 2 5 3 6 3 6ans(:,:,2) = 1 4 1 4 2 5 2 5 3 6 3 6ans(:,:,3) = 1 4 1 4 2 5 2 5 3 6 3 6>> X=zeros(2)X = 0 0 0 0>> Y=ones(2)Y = 1 1 1 1>> Z=repmat(2,2,2)Z = 2 2 2 2>> AA=cat(3,X,Y,Z)AA(:,:,1) = 0 0 0 0AA(:,:,2) = 1 1 1 1AA(:,:,3) = 2 2 2 2>> AA=cat(2,X,Y,Z)AA = 0 0 1 1 2 2 0 0 1 1 2 2>> AA=cat(1,X,Y,Z)AA = 0 0 0 0 1 1 1 1 2 2 2 2
数组的运算
- 点方式运算表明是数组元素之间的运算关系
- 直接进行乘、除、乘方运算则是向量或矩阵之间的运算关系
- 对于向量的除法运算,左除(\)和右除(/)的意义不同,两者之间除数和被除数是不同的
常用的标准数组
>> eye(3)ans = 1 0 0 0 1 0 0 0 1>> randn(3)ans = 0.5377 0.8622 -0.4336 1.8339 0.3188 0.3426 -2.2588 -1.3077 3.5784>> rand(3)ans = 0.9649 0.9572 0.1419 0.1576 0.4854 0.4218 0.9706 0.8003 0.9157>> A=1:4A = 1 2 3 4>> diag(A,1)ans = 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0>> diag(A)ans = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4>> diag(A,-3)ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 4 0 0 0
下节:低维数组的寻址和搜索、低维数组的处理函数、高维数组的处理函数和运算
0 0
- 【003.Matlab基础 数组】
- Matlab基础学习------架构数组
- Matlab基础学习----------------元胞数组
- Matlab基础学习------------数组和矩阵
- 【004.Matlab基础 数组寻址与处理 】
- matlab基础学习——数组
- Matlab基础之单元数组和结构数组
- 【005.Matlab基础 单元数组与结构体 】
- matlab数组
- 【MATLAB】数组
- matlab 数组
- matlab基础
- MATLAB基础
- matlab基础
- Matlab基础
- MATLAB 基础
- matlab基础
- Matlab 基础
- 【HDU】5367 digger【动态线段树】
- ORACLE中让某一列输出的结果的货币单位为$或者¥
- 带有输入参数的存储过程
- Trapping Rain Water
- 【Java多线程】之一:Thread Simple Example
- 【003.Matlab基础 数组】
- 第80讲:List的泛型分析以及::类和Nil对象学习笔记
- 左移 & 右移
- android的Http协议学习与应用——连接一个网页
- 自己封装的XMLHttpRequest2 ajax
- 14、 C语言和设计模式(状态模式)
- Hibernate结合C3P0
- 自定义Spinner
- 【实例】【html5】在canvas获取鼠标的坐标