Matlab使用字符串数组、单元数组(cell array)和结构数组 (struct array)

要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。

MATLAB字符串数组的创建与运算

字符串数组主要用于可视化编程内容,如界面设计和图形绘制。

1.字符串变量的创建

字符变量的创建方法是:在指令窗口中先把待建的字符放在“单引号对”中,再按回车键。注意,该“单引号对”必须在英文状态下输入。这“单引号对”是MATLAB用来识别字符串变量所必须的。如:

>>a='This is an example.' a =

This is an example.

>>msg = 'You''re right!' %创建带单引号的字符串 msg =

You're right!

2.字符串数组的标识

字符串变量的每个字符(英文字母、空格和标点都是平等的)占据一个元素位,在数组中元素所处的位置用自然数标识。如: >>a='This is an example.'

>>b=a(1:4) % 提出一个子字符串 b = This

ra=a(end:-1:1) % 字符串的倒排 ra =

.elpmaxe na si sihT 又如:

>>A='这是一个算例。';

>>B=size(A) % 符号数组 A 的“大小” B = 1 7

>>C=A([5 6]) % 提出一个子字符串 C = 算例

3.字符串的ASCII码

字符串的存储是用ASCII码实现的。指令abs和double都可以用来获取串数组所对应的ASCII码数值数组。指令char可把ASCII码数组变为串数组。如

>>d=double(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码数组的操作:使字符串中字母全部大写 >>w=find(a>='a'&a<='z'); %找出串数组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. Lee

4.2多个字符串形成多行字符串矩阵 ? 用中括号则要求两个字符串一般长

>> Aa=[A;a]; %操作错误,不能成生成二行的矩阵,长度不一致 ? 用char或strvcat函数进行连接

>>D=strvcat('Hello','Yes','No','Goodbye') %利用串操作函数(chat也可以)创建多行串数组, 连接多行字符串,每行长度可不等,自动把非最长字符串最右边补空格, 使与最长字符串相等,会忽略空字符串。 D =

Hello Yes No Goodbye

5. 字符串替换和查找

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 a=2; w=3;

t=0:0.01:10;

y=exp(-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_text=char('maximum',t_text,y_text); % <9> %

tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; plot(t,zeros(size(t)),'k') hold on

plot(t,y,'b')

plot(t(i_max),y_max,'r.','MarkerSize',20) text(t(i_max)+0.3,y_max+0.05,max_text) % <16> title(tit),xlabel('t'),ylabel('y'),hold off

%<11>

y=exp(-2t)*sin(3t)0.60.50.40.3maximum t=0.33 y=0.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)={2+3i};

>> 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}=2+3i;

>> B{2,1}='A character'; >> B{2,2}=12:-2:0; >>B B =

[3x3 double] [2.0000 + 3.0000i]

matlab单元数组和结构,Matlab使用单元数组和结构数组相关推荐

  1. matlab单元数组与结构体的区别,MATLAB中的结构体和单元数组

    MATLAB中的结构体和单元数组 一.结构: x.real=10 x.imag=5 增加字段 x.scale=1 使用struct函数 s=struct('field1',values1,'field ...

  2. matlab单元数组和结构,Matlab中单元数组和结构数组

    前言: 单元数组和结构数组是一种新的数据类型,能将不同类型.不同维数的数组组合在一起,从而方便对不同的数据类型方便管理和维护. 如上图所示的2*2矩阵中,分别存储着四种不同的数据类型,分别为数组.字符 ...

  3. 回归预测 | MATLAB实现CNN-GRU(卷积门控循环单元)多输入单输出

    回归预测 | MATLAB实现CNN-GRU(卷积门控循环单元)多输入单输出 目录 回归预测 | MATLAB实现CNN-GRU(卷积门控循环单元)多输入单输出 基本介绍 模型结构 CNN神经网络 G ...

  4. 【GRU时序预测】基于matlab卷积神经网络结合门控循环单元CNN-GRU时间序列预测【含Matlab源码 2287期】

    ⛄一.CNN-GRU数据预测 1 理论基础 1.1 CNN算法 负荷序列数据为一维数据,用一维卷积核对数据进行卷积处理,以获取数据的特征. 现设定卷积核的维度为3,移动步长为1,对输入数据进行卷积,以 ...

  5. MATLAB有限元二维编程(三角单元)

    首先,原理我是参考了这位博主,博主讲的很细致,但是有一些细节没有详细的提及,在此把自己在参照该博主的matlab代码后自己编程的过程纪录一下,如果有人看博主的文章就已经懂了,那么我这篇文章可能就对这些 ...

  6. GWO-GRU多变量回归预测,灰狼算法优化门控循环单元的回归预测(Matlab)

    GWO-GRU多变量回归预测,灰狼算法优化门控循环单元的回归预测(Matlab) 1.data为数据集. 2.MainGWO_GRUNN.m为程序主文件,其他为函数文件无需运行. 3.命令窗口输出R2 ...

  7. matlab四节点矩形单元的应变,四节点矩形单元有限元解读.ppt

    四节点矩形单元有限元分析过程 Tianjin University 引入无量纲坐标: 四节点矩形单元有限元分析过程 Tianjin University 由几何方程可得单元应变场表达式: 可记为: 四 ...

  8. matlab 删掉空行,在MATLAB中使用XLSWRITE:如何删除空单元格?

    如果我理解你的问题的第一部分,你想删除 newfile 单元格数组中只包含空单元格的任何行 . 您可以使用函数CELLFUN来查找空单元格,使用函数ALL查找包含所有空单元格的行,然后使用logica ...

  9. matlab 比较两个结构体,用于比较 MATLAB 结构体数组的比较器 - MATLAB - MathWorks 中国...

    创建一个供交互测试的测试用例. import matlab.unittest.TestCase import matlab.unittest.constraints.IsEqualTo import ...

最新文章

  1. android id 重名_Android App 自定义权限重名不能安装解决办法
  2. jeecg智能开发平台参与-2013年度中国优秀开源项目评比
  3. 定价错误: 必要条件 MWST 丢失
  4. 基于Git rebase修改历史提交信息
  5. 《SpringMVC从入门到放肆》一、概述
  6. Symantec(赛门铁克)非受管检测
  7. 截图截取各种右键菜单的方法
  8. OpenCV-计时函数cv::getTickCountcv::getTickFrequency
  9. vue2.0路由(跳转和传参)经典介绍
  10. sql 查询id 逗号拼接_sql查询列进行STUFF()拼接 单引号 逗号_xml path excel
  11. jQuery文档加载完再执行
  12. RGB和RGBA之间的转换
  13. R语言:企业风险分析(2)【蒙特卡罗模拟,Monte-Carlo Simulation】
  14. fitbit手表中文说明书_fitbit感觉智能手表动手
  15. 可编程串行通信接口芯片8251A
  16. android延时摄影功能,学会这几招!让你玩转荣耀30夜景延时摄影
  17. 【图像去噪】基于小波变换(中值、硬阙值、软阙值)的图像去噪含Matlab源码
  18. Android开发丶集成微信原生登录
  19. 现在当兵有什么待遇复原以后_大学生当兵有什么好处 退伍后待遇怎么样
  20. Java国际化ResourceBundle详解

热门文章

  1. nodejs Error: request entity too large解决方案
  2. Redis笔记之基本数据结构 字典
  3. the development of c language(转)
  4. QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数
  5. Ubuntu18 Win10搭建Caffe训练识别mnist手写数字demo
  6. Metrics_collector还没有添加到共享预加载库(shared_preload_libraries)中
  7. macos下使用aria2_macOS下 ansible简单安装及基础使用
  8. go出现missing go.sum entry for module providing package 错误
  9. java点_java常见基础点
  10. Win11怎么设置耳机和音响一起响