您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > MATLAB数值数组及其运算
第二讲数值数组及其运算数值数组和数组运算始终是MATLAB的核心第二讲数值数组及其运算2.1表达式2.2引导2.3一维数组的创建和寻访2.4二维数组的创建2.5二维数组元素的标识2.6二维数组的子数组寻访和赋值2.7执行数组运算的常用函数第二讲数值数组及其运算2.8数组运算和矩阵运算2.9标准数组生成函数和数组操作函数2.10数组构作技法综合2.11高维数组2.12“非数”和“空”数组2.13关系操作和逻辑操作2.1表达式MATLAB采用表达式语言形式,语句常用的形式:例:1.3+2*0.9%值存放在默认变量ans中a=1.3+2*0.9x=rand(2,4)%产生2*4大小的随机矩阵如果表达式过长,可分装在几行,行末加三个点…,表示下一行是续行。z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5)....*exp(-x.^2-y.^2)-1/3*exp(-(x+1).^2-y.^2);2.1表达式表达式的组成:1)数值2)变量3)操作符4)函数2.1.1数值在MATLAB中,所有的数都用浮点双精度类型来存储和运算。(实矩阵的每个元素占8个字节,复矩阵的每个元素占16个字节)缺点:浪费内存、降低运算的速度。优点:省略了定义数据类型的语句,而且编程时无须考虑数据类型的匹配问题,减少了出错的可能。这种战略取得了成功:使人们不在编程细节上化精力,把注意力集中到科学计算的方法和建模合理性等大问题上。重点2.1.1数值MATLAB采用十进制表示形式合法的数值形式举例:3-990.001.19-5.1+6.8i7.8-6j(虚数)9.4e61.3e-3-4.5E33(科学表示法)2e3.4e后面不允许小数形式2.1.2变量变量的命名规则:1)变量名、函数名对字母的大、小写敏感。2)变量名由字母、数字和下划线构成。第一个字母必须是英文字母。3)有字符个数限制(版本5.0:最多31个字符)2.1.2变量MATLAB系统默认变量(注意大小写!)i或j:虚单元正确:5+7j错误:5+j7pi:圆周率ans:计算机结果的缺省变量名eps:机器的零阈值2.2204e-016Inf或inf:正无穷大NaN或nan:不定值(即无效数据)重点可以表示“无穷大”、“不定值”,说明matlab容错性强运算优先级:算术运算符关系运算符逻辑运算符圆括号可以改变其顺序!2.1.3操作符MATLAB操作符包括:算术运算关系运算逻辑运算位运算其他操作符重点一)算术运算符+:加法-:减法*:矩阵乘法(叉乘).*:矩阵元素乘法/:矩阵右除法./:矩阵元素右除法\:矩阵左除法.\:矩阵元素左除法^:矩阵指数.^:矩阵元素指数’:复共轭转置.’:非共轭转置二)逻辑运算符针对数组元素&:逻辑与~:逻辑非|:逻辑或xor:逻辑异或三)关系运算符针对元素:小于=:小于等于:大于=:大于等于==:等于~=:不等于2.1.4函数MATLAB的函数从来源上看,可以分为三类:1)MATLAB的内部函数2)MATLAB工具箱中的函数3)用户自定义函数用户使用中,感觉不到三类的区别!1)函数可嵌套(象积木一样搭建)例如:x=sqrt(log(z))2)函数可多输入例如:x=max(z,y)3)函数可多输出重点y向量中最大的值最大值的位置y矩阵中每一列最大的值最大值的位置注意:输入矩阵类型不同,则执行的操作不同。因为matlab函数太多,所以要养成使用help命令,得到有关函数的具体用法:例:helpmax2.1.4函数2.1表达式表达式(即语句):将变量、数值、函数用操作符连接起来,就构成了表达式。例如:a=(10j+sqrt(10))/2;%注释☆行末的“;”用于抑制结果在屏幕上显示例如:sin(a),sin(b),a+b☆同在一行的表达式,必须用“,”分开2.2引导数组:由一组实数或复数排成的长方阵列(Array)一维的“行”或“列”二维的“矩形”三维的“若干矩形的堆叠”更高的任意维2.2引导数组运算:无论对数组施加什么运算(包括函数),总认为是对数组中每个元素平等的实施同样的操作设计数组和数组运算的目的:使程序简单、易读;更接近数学公式提高程序向量化程度,提高计算效率,节省系统开销2.2引导绘制函数在0≤x≤1时的曲线x=0:0.1:1%定义自变量的采样点取值数组y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')%绘图第一句定义自变量数组:0为起点,每隔0.1取一个点,直到1。得到1×11的数组xxey2.2引导第二句中,指数函数exp(-x)对x每个元素求值,结果也是1×11的数组数组乘使两个数组对应元素相乘,得到y也是1×11的数组连续函数必须在相应区间上采样才能进行数值计算一维数组包括行向量和列向量,是所有元素排列在一行或一列的数组。创建行向量创建列向量由行向量转置为列向量2.3二维数组的创建A=1:4A=1234B=1:2:4B=13D=linspace(1,4,5)D=1.00001.75002.50003.25004.0000例:创建一维等差数组A=logspace(0,log10(32),6)A=1.00002.00004.00008.000016.000032.0000例:创建一维等比数组创建一维数组可能用到:方括号、逗号、空格、分号、冒号、函数linspace、logspace以及转置符2.3二维数组的创建二维数组与矩阵二维数组是由实数或复数排列成矩形构成的从数据结构上看,矩阵和二维数组没有区别当二维数组带有线性变换含义时,就是矩阵可通过输入每个元素的方式产生可以通过数据文件产生可以通过MATLAB提供的标准函数产生直接调用其他M文件,即可使用已有的矩阵变量2.3二维数组的创建数组的产生:2.3二维数组的创建1.直接输入法二维数组三要素:整个数组必须以“[]”为首尾数组行与行之间必须用“;”或回车隔离数组元素必须用“,”或空格分隔2.3二维数组的创建在MATLAB环境下,用下面三条指令创建二维数组Ca=2.7358;b=33/79;%这两条指令分别给变量a,b赋值C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]%创建二维数组CC=1.00005.4716+0.4177i0.69090.70714.82443.5000+1.0000i“;”在“[]”内,是数组行分隔符“;”作为指令结束符,不显示执行结果2.3二维数组的创建复数数组的另一种输入方式M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]CN=M_r+i*M_i%由实部、虚部数组构成复数数组M_r=123456M_i=111213141516CN=1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i“,”在“[]”内,是数组元素分隔符“,”作为指令结束符,显示执行结果2.3二维数组的创建2.利用M文件创建和保存数组对于经常需要调用的数组尤其是比较大而复杂的数组值得为它专门建立一个M文件通过数据文件产生矩阵例如,我们已经得到一个数据文件,名为mydata.dat,里面存放一个5*3的数组,则可用命令:loadmydata.dat得到矩阵mydata。应用:可以和其它语言程序进行数据通信。举例:2.4二维数组元素的标识1.“全下标”标识经典教科书的标识法即指出是“第几行,第几列”的元素优点:几何概念清楚,引述简单。(最常用)“全下标”由两个下标组成:行下标,列下标。例如:A(2,5)2.4二维数组元素的标识2.“单下标”标识就是用一个下标来指明元素在数组中的位置对二维数组元素进行“一维编号”把二维数组所有列,按照先左后右的次序,首尾相接排成“一维长列”,然后自上往下编号“单下标”与“全下标”转换关系:以(m×n)的二维数组A为例,全下标元素位置是“第r行,第c列”,改为单下标表示为a=(c-1)×m+r。MATLAB有两个指令可实现此转换:Sub2ind据全下标算出单下标Ind2sub据单下标算出全下标2.4二维数组元素的标识3.“逻辑1”标识常用问题:寻找数组中大于某值的元素找出数组中所有绝对值大于3的元素A=zeros(2,5);%预生成一个2×5全零数组A(:)=-4:5%运用“全元素”赋值法获得AL=abs(A)3%产生与A同维的“0-1”逻辑值数组islogical(L)%判断L是否逻辑值数组X=A(L)%把L中逻辑值1对应的A元素取出5311342024A2.4二维数组元素的标识A=-4-2024-3-1135L=1000100001ans=1X=-445L的元素是0或1,它是“逻辑数组”,它是一种特殊的数据类型。“逻辑1”标识法:通过与A同样大小的逻辑数组L中“1”的位置指示A中元素的位置2.5二维数组的子数组寻访和赋值A(r,c)A的r行c列元素A(r,:)A的r行全部元素A(:,c)A的c列全部元素A(:)A的“单下标全元素”寻访A(s)“单下标”寻访。生成“s指定的”一维数组。S是行数组(或列数组),则A(s)就是长度相同的行数组(或列数组)。A(L)“逻辑1”寻访。由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素。2.5二维数组的子数组寻访和赋值A(r,c)=Sa“双下标”方式赋值。Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同。A(:)=D(:)全元素赋值。结果:保持A的“行宽、列长”不变。条件:A、D辆数组的元素数相等。A(s)=Sa“单下标”部分元素赋值。结果:保持A的“行宽、列长”不变。条件:s单下标数组长度必须与一维数组Sa的长度相等,但s、Sa不一定同是“行数组”或“列数组”。2.5二维数组的子数组寻访和赋值A=zeros(2,4)%创建2×4的全零数组A=00000000A(:)=1:8%全元素赋值方式A=13572468s=[235];%产生单下标数组行数组A(s)%由“单下标行数组”寻访产生A元素组成的行数组Sa=[102030]'%Sa是长度为3的“列数组”A(s)=Sa%单下标方式赋值2.5二维数组的子数组寻访和赋值ans=235Sa=102030A=12030710468A(:,[23])=ones(2)%双下标赋值方式:把A的第2、3列元素全赋为1A=111710118A(:)=1:6;%全元素赋值法A=A*(1+i)%运用标量与数组乘产生复数矩阵A_A=A.'%数组转置,即非共轭转置A_M=A'%矩阵转置,即共轭转置A=1.0000+1.0000i3.0000+3.0000i5.0000+5.0000i2.0000+2.0000i4.0000+4.0000i6.0000+6.0000iA_A=1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i5.0000+5.0000i6.0000+6.0000iA_M=1.0000-1.0000i2.0000-2.0000i3.0000-3.0000i4.0000-4.0000i5.0000-5.0000i6.0000-6.0000i2.6标准数组生成函数和数组操作函数1.标准数组生成函数diag产生对角形数组eye产生单位数组magic产生魔方数组(以上三数组高位不适用,只适用于二维以下)ones产生全1数组rand1)产生[0,1]之间的均匀分布的随机数:Randn产生均值为0,方差为1的标准正态分布随机数zeros产生全0数组2.6标准数组生成函数和数组操作函数标准数组产生的演示ones(1,2)%产生长度为2的全1行数组ans=11randn(‘state’,0)%把
本文标题:MATLAB数值数组及其运算
链接地址:https://www.777doc.com/doc-7343279 .html