重庆忠县网站建设公司推荐,海报自动设计网站,开发次元世界,运城市盐湖区姚孟精诚网站开发中心Matlab使用字符串数组、单元数组(cell array)和结构数组 (struct array)要在MALTAB中实现比较复杂的编程#xff0c;就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。MATLAB字符串数组的创建与运算字符串数组主要用于可视化编…Matlab使用字符串数组、单元数组(cell array)和结构数组 (struct array)要在MALTAB中实现比较复杂的编程就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。MATLAB字符串数组的创建与运算字符串数组主要用于可视化编程内容如界面设计和图形绘制。1.字符串变量的创建字符变量的创建方法是在指令窗口中先把待建的字符放在“单引号对”中再按回车键。注意该“单引号对”必须在英文状态下输入。这“单引号对”是MATLAB用来识别字符串变量所必须的。如aThis is an example. a This is an example.msg Youre right! %创建带单引号的字符串 msg Youre right!2.字符串数组的标识字符串变量的每个字符(英文字母、空格和标点都是平等的)占据一个元素位在数组中元素所处的位置用自然数标识。如 aThis is an example.ba(1:4) % 提出一个子字符串 b Thisraa(end:-1:1) % 字符串的倒排 ra .elpmaxe na si sihT 又如A这是一个算例。;Bsize(A) % 符号数组 A 的“大小” B 1 7CA([5 6]) % 提出一个子字符串 C 算例3.字符串的ASCII码字符串的存储是用ASCII码实现的。指令abs和double都可以用来获取串数组所对应的ASCII码数值数组。指令char可把ASCII码数组变为串数组。如ddouble(a) d 84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46 char(d) ans This is an example.例对字符串ASCII码数组的操作:使字符串中字母全部大写 wfind(aaaz); %找出串数组a中小写字母的元素位置。d(w)d(w)-32; %大小写字母ASCII值差32用数值加法改变部分码值。 char(d) %把新的ASCII码翻成字符 ans THIS IS AN EXAMPLE.4.字符串数组的运算(主要是连接)4.1 连接成一行Aa[A,a] 可将字符串连接成一行长字符串 Aa 这是一个算例。This is an example.name strcat(Thomas, R., Lee) %连接两个字符串,每个字符串最右边的空格被裁切 name Thomas R. Lee4.2多个字符串形成多行字符串矩阵 ? 用中括号则要求两个字符串一般长 Aa[Aa]; %操作错误不能成生成二行的矩阵,长度不一致 ? 用char或strvcat函数进行连接Dstrvcat(Hello,Yes,No,Goodbye) %利用串操作函数(chat也可以)创建多行串数组, 连接多行字符串,每行长度可不等自动把非最长字符串最右边补空格, 使与最长字符串相等会忽略空字符串。 D Hello Yes No Goodbye5. 字符串替换和查找strrep—进行字符串替换区分大小写strrep(str1,str2,str3) %它把str1中所有的str2字串用str3来替换strfind(str,patten) %查找str中是否有pattern返回出现位置没有出现返回空数组findstr(str1,str2) %查找str1和str2中较短字符串在较长字符串中出现的位置没有出现返回空数组strmatch(patten,str) %检查patten是否和str最左侧部分一致 strtok(str,char) %返回str中由char指定的字符串前的部分和之后的部分 6.常用字符串操作函数blanks(n)—创建有n个空格组成的字符串 deblank(str)—裁切字符串的尾部空格strtrim(str)—裁切字符串的开头和尾部的空格制表回车符 lower(str)—将字符串中的字母转换成小写 upper(str)—将字符串中的字母转换成大写 sort(str)—按照字符的ASCII值对字符串排序 num2str—将数字转换为数字字符串 str2num—将数字字符串转换为数字 mat2str—将数组转换成字符串int2str—把数值数组转换为整数数字组成的字符数组7.其他字符串操作函数strcmp—比较两个字符串是否完全相等是返回真否则返回假strncmp—比较两个字符串前n个字符是否相等是返回真否则返回假 strcmpi—比较两个字符串是否完全相等忽略字母大小写strncmpi—比较两个字符串前n个字符是否相等忽略字母大小写 isletter—检测字符串中每个字符时否属于英文字母isspace—检测字符串中每个字符是否属于格式字符(空格回车制表换行符等) isstrprop—检测字符每一个字符是否属于指定的范围.【例】综合例题在MATLAB计算生成的图形上标出图名和最大值点坐标。clear a2; w3;t0:0.01:10;yexp(-a*t).*sin(w*t); [y_max,i_max]max(y);t_text[t,num2str(t(i_max))]; % 7 y_text[y,num2str(y_max)]; % 8 max_textchar(maximum,t_text,y_text); % 9 %tit[yexp(-,num2str(a),t)*sin(,num2str(w),t)]; plot(t,zeros(size(t)),k) hold onplot(t,y,b)plot(t(i_max),y_max,r.,MarkerSize,20) text(t(i_max)0.3,y_max0.05,max_text) % 16 title(tit),xlabel(t),ylabel(y),hold off%11yexp(-2t)*sin(3t)0.60.50.40.3maximum t0.33 y0.4321y0.20.10-0.1024t6810图 3.1-1二. 单元数组单元数组中的每一个元素称为单元(cell). 单元可以包含任何类型的matlab数据, 这些数据类型包括数值数组, 字符, 符号对象, 甚至其他的单元数组和结构体. 不同的单元可以包含不同的数据.1.1单元数组创建与显示1、直接赋值法按单元索引法 和按内容索引法。(其实也就是将花括号放在等式的右边或是左边的区别)。注意“按单元索引法”和“按内容索引法”是完全等效的可以互换使用。通过下面实例我们看到花括号{}用于访问单元的值而括号()用于标识单元(即不用于访问单元的值)。具体理解{}和()区别可以在下面代码最后分别输入A{2,2}和A(2,2)。就会发现“按内容索引法{}”能显示完整的单元内容而“按单元索引法()”有时无法显示完整的单元内容。 A(1,1){[1 2 3; 4 5 6;7 8 9]}; % 按单元索引法 A(1,2){23i}; A(2,1){A character}; A(2,2){12:-2:0}; A要想详细显示A中的内容可用指令celldisp(A) A [3x3 double] [2.0000 3.0000i] A character [1x7 double] B{1,1}[1 2 3;4 5 6;7 8 9]; % 按内容索引法。 B{1,2}23i; B{2,1}A character; B{2,2}12:-2:0; B B [3x3 double] [2.0000 3.0000i]