4.1.3.3 转换函数产生数码字符串
【*例 4.1.3.3-1】最常用的数组/字符串转换函数 int2str , num2str , mat2str 示例。
(1)int2str 把整数数组转换成串数组(非整数将被四舍五入园整后再转换)
A=eye(2,4); %生成一个 数值数组
A_str1=int2str(A) %转换成 串数组。请读者自己用 size 检验。
A_str1 =
1 0 0 0
0 1 0 0
(2)num2str 把非整数数组转换为串数组(常用于图形中,数据点的标识)
rand('state',0)
B=rand(2,4); %生成数值矩阵
B3=num2str(B,3) %保持 3 位有效数字,转换为串
B3 =
0.95 0.607 0.891 0.456
0.231 0.486 0.762 0.0185
(3)mat2str 把数值数组转换成输入形态的串数组(常与 eval 指令配用)
B_str=mat2str(B,4) %保持 4 位有效数字,转换为“数组输入形式”串
B_str =
[0.9501 0.6068 0.8913 0.4565;0.2311 0.486 0.7621 0.0185]
Expression=['exp(-',B_str,')']; %相当于指令窗写一个表达式 exp(-B_str)
eval(Expression) %把 exp(-B_str)送去执行
ans =
0.3867 0.5451 0.4101 0.6335
0.7937 0.6151 0.4667 0.9817
【*例 4.1.3.3-2】综合例题:在 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)']; %<11>
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) %在图上书写最大值点的数据值<16>
title(tit),xlabel('t'),ylabel('y'),hold off%书写图名、横坐标名、纵坐标名