五、数组和数组运算

5.1简单数组
	前面几节运算只涉及单个数字,称之为标量,标量是数学的基础。
	定义数组、和C+一样,定义数组用[],中间不同数值用空格或逗号隔开。
	如我们要算sin(x)在0到pi内的值,如下
>> x=[.1*pi .2*pi .3*pi .4*pi .5*pi.6*pi .7*pi .8*pi .9*pi pi];
>> sin(x)
5.2数组寻址或下标
为方便描述,我们定义x数组为x=[1,2,3,4,5,6,7,8,9],注意=符号
取址语法形式:
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) //不合法,越界
5.3数组结构
上面我们逐个输入数组数值,显然在定义数量相对大的数组就不适用了。下面另外两种方法:
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个元素的数组
使用冒号表示法和函数linspace和logspace的时候。我们习惯把表达式用方括号表示出来。如:
>>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]  //错误行列数据个数不相等



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值