MATLAB学习(三)字符串、元胞&构架数组

第三阶段学习开始咯!字符串数组(Character String Array)、元胞数组(Cell array)、构架数组(Structure array)。微笑

MATLAB采用了面向对象编程技术,内建数据类型5种以上,还有许多专门设计的类(如符号类、内联函数类、控制工具包中的线性时不变模型类、神经网络类等)。

字符串数组

串数组及其相应操作,为MATLAB文字表达、复杂字符的组织、数据的可视化以及MATLAB的宏定义提供了有力的支持。

1、字符串

【eg.1】字符串入门

>> a=12345.6789       %给变量a赋数值标量
>> class(a)           %a类别判断
>> a_s=size(a)        %数值数组a的大小
>> b='S'              %给变量b赋字符标量(即单个字符)
>> class(b)           %b类别判断
>> b_s=size(b)        %符号数组b的大小
>> whos               %观察变量a,b在内存中所占字节


图1 字符串

【eg.2】字符串的属性和标识

>> a='This is an example.' 
>> size(a)
>> a14=a(1:4)             %提出一个字符串
>> ra=a(end:-1:1)         %字符串倒排
>> ascii_a=double(a)      %产生ASCII码
>> char(ascii_a)          %把ASCII码转换成字符串
>> %使字符串中字母全部大写
>> w=find(a>='a' & a<='z');       %找出字符串中小写字母的元素位置
>> ascii_a(w)=ascii_a(w)-32;      %大小写字母ASCII值差32.用数值加法改变部分码值
>> char(ascii_a)                  %把更新后的ASCII码翻成字符
>> A='这是一个算例.';             %创建中文字符串
>> A_s=size(A)           %串数组的大小
>> A56=A([5 6])          %取串的子数组
>> ASCII_A=double(A)     %获取ASCII码
>> char(ASCII_A)         %把ASCII码翻译成字符
>> b='Example"3.1.2-1"'


图2 字符串属性

2、复杂字符串

【eg.3】复杂串数组的创建

>> S=['This string array'
'has multiple rows']                               %多行串数组的直接输入
>> size(S)
>> S1=char('This string array','has two rows.')
>> S2=str2mat('这','字符','串数组','','由4行组成')  %“空串”会产生空格行
>> S3=strvcat('这','字符','串数组','','由4行组成')  %“空串”不会产生一个空格行
>> size(S3)


图3 复杂串数组的创建

【eg.4】int2str(把整数数组转换成串数组)、num2str(非整数转换串数组)、mat2str(常与eval指令配用,把数值数组换换成输入形态的串数组)

>> A=eye(2,4)             %生成一个(2*4)数值数组
>> A_str1=int2str(A)      %转换成(2*10)串数组,
>> size(A_str1)
>> rand('state',0)
>> B=rand(2,4);           %生成数值矩阵
>> B3=num2str(B,3)        %保持3位有效数字,转换成串
>> B_str=mat2str(B,4)     %保持4位有效数字,转换成“数组输入形式”串
>> Expression=['exp(-',B_str,')'];  
>> eval(Expression)


图4 转换函数产生数码字符串
【eg.5】MATLAB计算生成的图形上标出图名、最大值点坐标
>> 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))];             %生成最大值点的横坐标字符串
y_text=['y=',num2str(y_max)];                %生成最大值点的纵坐标字符串
>> max_text=char('maximum',t_text,y_text);   %生成标志最大值点的字符串
>> %生成标志图名用的字符串
>> tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; 
>> plot(t,zeros(size(t)),'k')                   %画纵坐标为0的基准线
>> hold on                                      %保持绘制的先不被清除
>> plot(t,y,'b')                                %用蓝色画y(t)曲线
>> plot(t(i_max),y_max,'r.','MarkerSize',20)    %用大红点标最大值点
>> text(t(i_max)+0.3,y_max+0.05,max_text)       %用大红点标最大值点
>> title(tit),xlabel('t'),ylabel('y'),hold off  %书写图名、横坐标名、纵坐标名

图5 字符串运用
【eg.6】利用 元胞数组(Cell Array)创建复杂字符串
元胞数组允许存放、并操作各种不同类型和不同大小的数据,但 存放和操作复杂字符串是元胞数组的一个主要用途。
a='MATLAB R2015b';
b='includes new data types:';     %创建单行字符串a,b
c1='Multidimensional array';
c2='User-definable data structure';
c3='Cell arrays';
c4='Character array';
c5='Function handle';
c=char(c1,c2,c3,c4,c5);           %创建多行字符串c
C={a;b;c};                        %利用元胞数组存放长短不同的字符内容
disp([C{1:2}])                    %显示前两个元胞中的字符内容
disp('')                          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值