Matlab 在gui中使用文本函数

Matlab 在gui中使用文本函数,matlab,Matlab,我想使用文本函数向gui中的曲线添加一些信息。但问题是,当我设置坐标并指定图形的句柄时,我没有在图形上显示任何内容,文本也没有显示任何内容。代码在for循环中。但这里有一小部分代码包含文本函数 我在其他地方定义了一些矩阵d、s、c、J和mi animh=handles.runAnimationOnAxes; V=s*Es+c*0.7053*Z^2/A^(1/3)+... J(it).*(J(it)+1)*(hbar)^2./(2*(mi*2/5*M*r0^2*A^(2/3)+... 4*M*a^

我想使用文本函数向gui中的曲线添加一些信息。但问题是,当我设置坐标并指定图形的句柄时,我没有在图形上显示任何内容,文本也没有显示任何内容。代码在for循环中。但这里有一小部分代码包含文本函数

我在其他地方定义了一些矩阵d、s、c、J和mi

animh=handles.runAnimationOnAxes;
V=s*Es+c*0.7053*Z^2/A^(1/3)+...
J(it).*(J(it)+1)*(hbar)^2./(2*(mi*2/5*M*r0^2*A^(2/3)+...
4*M*a^2));

p=polyfit(d,V,5);
pol=p(1)*d.^5 + p(2)*d.^4+p(3)*d.^3+p(4)*d.^2+p(5)*d+p(6);

plot(animh,d,pol,'k')
ylabel(animh,'$V(r/R_0)\ (Mev)$','interpreter','latex',...
'FontSize',11);
xlabel(animh,'$r/R_0$','interpreter','latex',...
'FontSize',11);
xlim(animh,[0.3 2.5]);
ylim(animh,[Ymin Ymax]);
title(animh,'MLDM potential energy surface');

indexmin = find(min(pol) == pol);
xmin = d(indexmin);
ymin = pol(indexmin);

indexmax = find(max(pol) == pol);
xmax = d(indexmax);
ymax = pol(indexmax);

strmin = ['Minimum = ',num2str(ymin)];
text(animh,xmin,ymin,strmin);

strmax = ['Maximum = ',num2str(ymax)];
text(animh,xmax,ymax,strmax);
在其输入参数中,没有要在其上添加字符串的
轴的
句柄

实际上,前两个输入应该是添加字符串的点的
x坐标
y坐标

此外,
text
也可用于在3D图形中添加字符串,因此在您的说明中

text(animh,xmin,ymin,strmin);

轴手柄被解释为
x坐标
,而
xmax
ymax
分别被解释为
y坐标
z坐标

如果GUI中只有一个
,则只需删除调用
文本
中的第一个参数即可

如果GUI中有多个
,则应将要添加字符串的
轴设置为“当前轴”:

编辑:删除调用
text

axes(handles.runAnimationOnAxes)

strmin = ['Minimum = ',num2str(ymin)];
text(xmin,ymin,strmin);

strmax = ['Maximum = ',num2str(ymax)];
text(xmax,ymax,strmax);
希望这有帮助


Qapla’

谢谢你的回答。我有两个GUI,实际上有很多轴都有自己的句柄。但是这段代码驻留在第二个GUI中,由第一个GUI调用。在第二个GUI中,只有一个绘图,因此没有什么可混淆的了。但正如你所说,我实际上删除了第一个参数,但还是没有发生任何事情。我不知道该怎么处理。你检查过
xmin
ymin
xmax
ymax
的值吗?它们是否在图表中?(我已经更新了代码的最后一部分,现在调用没有Axis句柄)。实际上,我已经全部检查过了。它们都在图表中。唯一的问题是文本函数无法识别它应该向其中添加文本的图形。我还删除了轴句柄,但还是什么都没有。在调用
文本之前,是否设置了
轴(handles.runanimationaxes)
?你能试试th=text(xmax,ymax,strmax)吗然后
获取(th)
?您在CommandWindow上看到了什么?要在其上添加字符串的
runanimationaxes
轴是右侧的
axes
axes(handles.runAnimationOnAxes)

strmin = ['Minimum = ',num2str(ymin)];
text(xmin,ymin,strmin);

strmax = ['Maximum = ',num2str(ymax)];
text(xmax,ymax,strmax);