Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第1页MATLAB程序设计张兵Email:zhangbing_end@163.com第三讲向量、字符串、单元数组MATLAB程序设计Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第2页教学内容向量字符串单元数组Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第3页MATLAB向量向量是特殊数组,只有一行数据第四个元素:a(4)元素值为13索引向量a:Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第4页创建向量--直接输入法使用一系列常指创建指定初始值、步长、终值A=[2,5,7,1,3]A=25713可用空格代替B=1:3:20B=14710131619start:step:end可能不包含在向量中Copyright©2014byZhangBing,zhangbing_end@163.com创建向量--通过向量运算2020年1月9日第5页A=1:5A=12345B=5:-1:1B=54321C=A+BC=66666D=C+A.*BD=1114151411Copyright©2014byZhangBing,zhangbing_end@163.com创建向量--使用内置函数zeros,ones,rand,…(略)linspace(a,b,num)–产生从a到b的等差数列,元素个数为nlogspace(a,b,n)–创建从10^a到10^b之间,元素个数为n的指数数列2020年1月9日第6页Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第7页A=linspace(0,10,6)A=0246810B=linspace(2,-2,5)B=210-1-2C=logspace(0,3,4)C=1101001000D=logspace(-1,-4,4)D=0.10.010.0010.0001Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第8页向量尺寸元素个数插入或删除元素向量a:sizeorlengthCopyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第9页向量索引(1/2)数值索引第四个元素:a(4)索引Copyright©2014byZhangBing,zhangbing_end@163.com向量索引(2/2)逻辑索引–注意:命令窗口中显示的逻辑变量值是用1代表真,用0代表假。2020年1月9日第10页逻辑索引长度不能超过向量长度Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第11页向量操作(1/4)算术运算+-.*./.^Copyright©2014byZhangBing,zhangbing_end@163.com向量操作(2/4)逻辑操作2020年1月9日第12页====~=&|~Copyright©2014byZhangBing,zhangbing_end@163.com向量操作(3/4)内置函数2020年1月9日第13页findsummeanminmaxfix…教材表2-1~6Copyright©2014byZhangBing,zhangbing_end@163.com向量操作(4/4)连接和切片2020年1月9日第14页a(start:inc:end)=b(start:inc:end)Copyright©2014byZhangBing,zhangbing_end@163.com应用实例12020年1月9日第15页已知向量A=[2,5,7,1,3,4],1)将向量A中索引为奇数的元素取出生成新向量B2)计算B与A中最大元素的差Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第16页应用实例2力与力矩(1/2)xyzfabfafbPMm已知作用于物体上P点的两个力fa、fb,计算P点的合力、该合力方向上的单位向量以及该力关于M点的力矩,其中:211011110401abPffMababfffabmMPfCopyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第17页应用实例2力与力矩(2/2)当运行该代码后,返回的结果如下:代码清单求解向量问题的脚本%计算合力和合力矩clear;clc;%输入参数P=[2,1,1];fa=[0,1,1];fb=[1,1,0];M=[4,0,1];%计算部分fab=fa+fb;fmag=sqrt(sum(fab.*fab));fdir=fab/fmag;m=cross(P-M,fab);%输出结果disp('合力大小=');disp(fmag);disp('合力方向=');disp(fdir);disp('对M点的合力矩=');disp(m);Copyright©2014byZhangBing,zhangbing_end@163.com字符串什么是字符串(string)?2020年1月9日第18页字符串str='astring';元素为字符的一维数组Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第19页字符串的生成(1/2)字符串的生成stringname='thecontentofthestring'单引号'注意:如果字符串中包含单引号,则需要用两个单引号代替Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第20页字符串的生成(2/2)字符串数组长度必须相同char(str1,str2,…)将不同长度的字符串组合成字符矩阵Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第21页字符串的操作字符串的显示1.直接显示法2.采用disp函数显示字符串的执行eval(str1,str2,…)Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第22页字符串的运算字符串的运算主要包括:1.判断字符串是否相等2.通过字符串运算来比较字符串中的字符3.进行字符分类、查找与替换4.字符串与数值数组之间的相互转换函数名函数用途函数名函数用途strcat横向连接字符串strvcat纵向连接字符串strcmp字符串比较strncmp比较字符串的前n个字符findstr字符串查找strjust字符串对齐strmatch字符串匹配strrep字符串查找与替换strtok选择字符串中的部分blanks创建由空格组成的字符串deblank删除字符串结尾的空格ischar判断变量是否为字符串iscellstr判断字符串单元数组isletter判断数组是否由字母组成isspace判断是否空格stringsMATLAB字符串句柄Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第23页字符串的比较(1/3)字符串的比较:strcmp、strncmp。–strcmp(str1,str2):当两个字符串相同时返回1,否则返回0–strncmp(str1,str2,n):比较两个字符串的前面几个字符是否相同Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第24页字符串的比较(2/3)比较运算符符号符号意义英文简写==等于eq~=不等于ne小于lt大于gt=小于等于le=大于等于ge本质是作为数组比较每个字符Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第25页字符串的比较(3/3)判断空格或者字母–isspace(str):判断字符串str中的字符是否为空格,是空格字符则返回1,否则返回0。–isletter(str):判断字符串str中的字符是否为字母,是字母则返回1,否则返回0。Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第26页字符串的查找和替换查找函数–findstr(str1,str2):用于在一个字符串str1中查找子字符串str2,返回子字符串出现的起始位置–strrep(str1,str2,str3):查找字符串中的子字符串并将其替换为另一个子字符串原字符串并未改变Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第27页–strmatch(‘str’,strs):在字符数组strs的每一行中查找’str’开头的字符串–strtok:该函数用于选取字符串中的一个部分。该函数的简单用法为strtok(str)。字符串的查找和替换Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第28页字符串与数值之间的转化(1/3)字符串转换为对应ASCII码的数值型数组字符串str:字符串的ASCII码:abs(str)类似地:double(str),也可将字符串转换为双精度浮点数数组双精度数值型数组:Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第29页字符串与数值之间的转化(2/3)char函数:将数值数组转化为字符串–char(arr),将数值数组arr转化为字符串–char(str1,str2,str3,...),由字符串str1、str2、str3、…生成字符矩阵Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第30页字符串与数值之间的转化(3/3)其它函数函数功能备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8('ab')→9798str2num将字符型转化为数字型str2num('123.56')→123.5600str2double与上一函数的功能相同,结果更精确一些,同时支持单元字符串数组double('123.56')→495051465354hex2num将十六进制数转化为双精度数hex2num('A')→-1.4917e-154hex2dec将十六进制数基数转化为正数hex2dec('B')→11bin2dec将二进制转化为十进制bin2dec('1010')→10base2dec将N底数字字符串转化为十进制base2dec('212',3)→23Copyright©2014byZhangBing,zhangbing_end@163.com单元数组什么是单元数组(cellarray)2020年1月9日第31页数组元素的数据类型相同数组元素的数据类型可以不同Copyright©2014byZhangBing,zhangbing_end@163.com2020年1月9日第32页单元数组的生成两种创建方式:–一个是通过赋值语句直接创建;–二是利用cell函数先为单元数组分配一个内存空间,然后再给各个单元赋值。数组名(索引1,索引2,…)={单元值}花括弧{}Copyright©2014byZhangBi