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. 吐槽

希望更多的大神能在網上分享一些方法和可以運行的代碼,幫助一些需要的人省掉不必要的麻煩,避免重複造輪子的過程。^_^筆芯~!
然後強烈抗議那些只有一個題目,內容一片空白的博客和帖子,當然還有具有嚴重灌水嫌疑的資料,將有價值的博客和資料都淹沒了,要找好久才能從一堆資料裏面找到需要的,嚴重影響了解決問題的效率!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章