MATLAB画图时带循环变化上下标的变量的标注方法

记录一下自己遇到的问题及解决方法,避免以后遇到同样的问题重复造轮子,为解决同样的问题留下思路,顺便吐槽吐槽,让心情愉悦一下。

1. 带上下标变量标注的画图问题描述

最近用Matlab画图的时候,想在图上每个关键点标注一下对应的变量,而这个变量是带上下标的,所以就在思考如何实现这个功能。
刚遇到这个问题的时候,也在网上各种搜索找方法,看到了这个帖子 text函数字符串中的下标如何通过for循环实现,在这个帖子中对问题的描述很清楚,至于下面的回答,虽然回答者完全没有看懂帖子描述的问题,但还是要给热心的网友点赞。针对这个问题,看网上的许多帖子真是越看越着急,题主要的是带类似于latex公式那种下标的形式,结果总是被整出a_i这种下标的形式,感觉总是文不对题,找了一会儿也没找到有效的解决方法,所以就自己鼓捣了。下面说一下我是怎么解决这个问题的。

2. 图中带下标的变量标注

首先就是在Matlab中画出,用的是plot函数,而对图中的标记进行文本标识,一般用的是text,两个函数的用法可以直接在Matlab中help一下,这里就不说了。
要说明的一点是,这里文本输出函数textstring参数中,用的是类似于latex的解析方式,所以总的方法就是:只要字符串是按latex的语法形式生成的,就可以解析为对应的形式,所以可以用下面的Matlab代码生成带有下标的变量标注形式。

count = 10;
figure;
points = [];
for i=1:count
    txt =strcat('z_{',num2str(i),'}');
    point = rand(1,3).*100;
    points = [points;point];
    plot3(point(1,1),point(1,2),point(1,3),'.','markersize',30);
    hold on
    text(point(1,1),point(1,2),point(1,3)+2,txt)
end
plot3(points(:,1),points(:,2),points(:,3));
title('示意图');
xlabel('变化');
ylabel('变化');
zlabel('分量');
grid minor

生成的图像如下图所示:
下标图片示意

3. 带上标的变量标注

对于需要生成上标的情况,只需要把 txt = strcat('z_{',num2str(i),'}')中的下划线_改为latex语法形式中表示上标的^就可以了,所以这一行代码,是这样的:txt = strcat('z^{',num2str(i),'}'),然后生成的图像如下图所示:
上标描述示意图

4. 同时带上下标的变量标注

同时带上下标的的变量标注直接给出代码和示意图。

count = 10;
figure;
points = [];
for i=1:count
    txt =strcat('Z^{',num2str(i),'}_{',num2str(i),'}');
    point = rand(1,3).*100;
    points = [points;point];
    plot3(point(1,1),point(1,2),point(1,3),'.','markersize',30);
    hold on
    text(point(1,1),point(1,2),point(1,3)+2,txt)
end
plot3(points(:,1),points(:,2),points(:,3));
title('示意图');
xlabel('X变化');
ylabel('Y变化');
zlabel('Z分量');
grid minor

示意图如下所示:
上下标皆带

5. 吐槽

希望更多的大神能在网上分享一些方法和可以运行的代码,帮助一些需要的人省掉不必要的麻烦,避免重复造轮子的过程。^_^笔芯~!
然后强烈抗议那些只有一个题目,内容一片空白的博客和帖子,当然还有具有严重灌水嫌疑的资料,将有价值的博客和资料都淹没了,要找好久才能从一堆资料里面找到需要的,严重影响了解决问题的效率!


版权声明:本文为u012424737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>