5.1简单数组 前面几节运算只涉及单个数字,称之为标量,标量是数学的基础。 定义数组、和C+一样,定义数组用[],中间不同数值用空格或逗号隔开。 如我们要算sin(x)在0到pi内的值,如下5.2数组寻址或下标>> x=[.1*pi .2*pi .3*pi .4*pi .5*pi.6*pi .7*pi .8*pi .9*pi pi]; >> sin(x)
为方便描述,我们定义x数组为x=[1,2,3,4,5,6,7,8,9],注意=符号
取址语法形式:5.3数组结构x(3) //取数组第三个元素,这里需要注意的是大括号 x(1:5) //取数1到5个元素 x(5:end) //返回5到最后一个元素值 x(4:-1:1) //该语法表示从第4个开始,向下递减,到1结束,如本例输出为4 3 2 1 x(2 2 7) //同理,从第2个开始,以2递增寻址,到7截止 如本例输出2 4 6 x([5 2 7]) //随机抽取元素,如本例中是取第5、2 、7个元素、[5 2 7]也是数组,作用是用//于抽取固定数组值。 索引号可以相同 x(2.3) //不合法,非整数值下标 x(100) //不合法,越界
上面我们逐个输入数组数值,显然在定义数量相对大的数组就不适用了。下面另外两种方法:使用冒号表示法和函数linspace和logspace的时候。我们习惯把表达式用方括号表示出来。如:x=(0:0.1:1)*pi //从0开始,步长为0.1,到1结束,每个元素乘pi。共11个元素的数组 //冒号表示法能指定数据点增量,但无法指定个数 linspace(first_value,last_value,number_of_value) x=linspace(0,pi,11) //和上面生成的数组效果一样,这种方式不用指定增量,且能直接指定个数 上面的方式创建的数组都是等间隔分布的,有些情况要创建对数间隔的数组。语法如下: logspace(0,2,11) //类比上面,很容易懂,创建从10^0开始10^2结束共11个元素的数组
>>a=[1:7] >>b=[linspace(1,7,5)]
虽然上述表示会让表达看起来更清晰,但方括号表示连接操作,这样会造成多余的运算。但圆括号不会。如
>>a=(1:7); //我们可以根据需要选择合适运算。
上面定义的数组都是间隔均匀的,对于间隔不均匀我们可以这么定义。如:
a=1:5; //1 2 3 4 5
b=1:2:9 //1 3 5 7 9
c=[b a] //1 3 4 7 9 1 2 3 4 5
d=[a(1:2:5) 1 0] //1 3 5 1 0 由a的第1、3、5个元素和后面的附加元素组成
总结如下图:
5.4、数组方向
数组包含一行多列,具有行方向特性,我们称之为行向量。同样也有一列多行。同样定义数组,我们上面用,或空格分开,数组以行显示。当我们需要以列显示时、
x=[1;2;3;4;5] //以分号作为分格符
//以空格或逗号隔开的元素指定不同列元素,;号指定不同行元素。
同样我们定义
x=1:5 //1 2 3 4 5
y=x’ //这样就转置了
(’)我们称之为转置操作符,但该操作符符操作的是复数数组时,虚部的符号也变化了。我们说(’)是共轭转置
(.’)带前置点号的转置操作符。只进行转置,不进行共轭操作。
显然对实数而言这两个符号等价。
z=complex(x,x) //我们可以具体实例一下
我们同样可以定义多行多例数组,如:
a=[1 2 3 4;5 6 7 8]
//分号同样用于分隔列中的元素,如这里就是告诉mat从5创建新行
当然我们也可以这样定义
a=[1 2 3 4
56 7 8] //回车键效果和上述分号一致
需要注意的是:mat严格遵循所有行列数必须相同。如下定义是错误的:
a=[1 2 3 4;1 2 3] //错误行列数据个数不相等
五、数组和数组运算
最新推荐文章于 2024-01-03 23:09:16 发布