close


總之試出來的一點東西
大家如果有需要就加減看吧
如果這是簡單的東西
那我就獻醜了...

-------------------------------------------------
-------------------------------------------------

例如我們想在Y軸上標上這樣的刻度
1.0
0.9
0.8
.
.
.
0.1
0.0

matlab會自動修改成
1
0.9
0.8
.
.
.
0.1
0
這時候我們會想說哇圖畫好了就好
可是哪知道
SHIT!!!

老師說刻度小數點一定要整齊漂釀
所以我就要來想辦法

首先要介紹兩個東西 很重要 一定要先記起來

第一個要介紹的是 YTick
這個東西的作用在於決定Y軸的刻度數目
因為基本上Y軸刻度的數目是matlab自己決定的
那為什麼我們要去改動他的刻度數目呢

這樣才能知道等一下我們自己生成的刻度要幾個
也就是說我們要清洗掉matlab在Y軸上的刻度
用string的格式貼到Y軸上

第二個就是YTickLabel
樓上是決定刻度數目
這個則是決定刻度內容
例如我們直接生成一個['0.0'; '0.1'; ...; '0.9'; '1.0'] 的字串
貼到Y軸上

這裡可以試試看如果不先決定刻度數目
而直接貼上刻度內容會變怎樣

eg:
x=1:100;
y=(sin(x)+1)/2;   %y的範圍在0~1之間
plot(x,y);
set(gca,'YTickLabel',['0.00'; '0.25'; '0.50'; '0.75'; '1.00'])

結果就是你在matlab圖上看到的那樣
但如果改成我先決定Y軸上有幾個刻度 (上例是5個)

eg:
x=1:100;
y=(sin(x)+1)/2;
plot(x,y);
set(gca,'YTick' , linspace(0,1,5))
set(gca,'YTickLabel',['0.00'; '0.25'; '0.50'; '0.75'; '1.00'])

 

------------------------------------------------------------------

solution 1:
一開始參考網路上的做法
超麻煩簡直是在開玩笑
先寫檔再讀檔
以上面的例子為例
以下不再說明
直接貼程式碼了

假如我們需要10個刻度
x=1:100
y=(sin(x)+1)/2;
plot(x,y);

label = linspace(0,1,10);
f = fopen('test.txt', 'wt');
fprintf(f, '%0.2f\n', label )
fclose(f);
%讀取時不是用fscanf 原因不多說了 如果可以試得出來也告訴我吧

fd = textread('test.txt','%s');
set(gca,'YTick' , label);
set(gca,'YTickLabel',fd);

--------------------------------------------------------------------

solution 2:

媽媽樂
原來num2str也可以用 '%0.2f'這招
SHIT
書上沒寫啊

一開始如果直接看matlab的help就好了 唉

虛功

x=1:100
y=(sin(x)+1)/2;
plot(x,y);

label = linspace(0,1,10);
set(gca,'YTick' , label)
set(gca,'YTickLabel', num2str(label' , '%0.2f'))


-----------------------------------------------------------------------

arrow
arrow
    全站熱搜

    honoyang 發表在 痞客邦 留言(3) 人氣()