關於標準化刻度的演算法

2022-06-04 21:30:15 字數 2068 閱讀 5154

blog好一些時間沒更新了,一方面是自己有些懶散了,另一方面是覺得難找到乙個自己很滿意的blog空間,看來看去綜合上來說還是

cppblog.com最好,雖然也有許多不盡人意之處。今天浮上來寫篇小文,希望自己重新恢復勤快,也藉此紀念今天這個特別的「中國情人節」——七夕。

作為工程師,經常需要畫些圖表曲線,那刻度就成了個問題,下面我舉兩個例子說說這個問題:

數字系列1:1.12,2.4,2.3,1.16,2.5,8.9,11,32,4.6

畫成曲線,用excel,很簡單,你很快就弄好了,如圖:

數字系列2:1234321.1,1234331.1,1234343.1,1234123.1,1234356.1,1234567.1,1234399.1,1234300.1

同樣,用excel畫成曲線,如下圖:

注意縱座標的刻度,我說的就是這個問題,如果是你,如何來標這個刻度?

一般來說,我們日常生活中看到的刻度都是以2,2.5,5,10為間隔的,如果給出了乙個最小值4.55,乙個最大值5.13,要求畫出大約5個刻度,那應該怎麼畫?如果是我,大概就畫出這幾個:4.4,4.6,4.8,5.0,5.2。

那這樣行不行呢?(5.13-4.55)/5=0.116,於是畫出這幾個刻度:4.55,4.666,4.782,4.898,5.014,5.13。當然也可以,但這個演算法未免太簡單,畫出來的刻度不好看。

那我們如何來描述我上面提到的以2,2.5,5,10為間隔的劃分演算法呢?我一直感覺很困難,直到今天動手去寫,並且把它寫出來了,才發現也就那麼幾行**,我把我的**貼出來與大家分享,我相信我這個演算法經過稍微的修改就能適應所有的座標刻度劃分。

**實在簡單,我不寫什麼注釋了,我覺得這是我寫的最精悍的小程式之一。

<?php 

// var_dump(regulateall(2, 45, 7));die;

// var_dump(regulateall(0.12, 0.43, 5));die;

var_dump(regulateall(10001, 10002, 5));

die;

var_dump(regulateall(-12.65, 56.3, 6));

die;

var_dump(regulateall(5243217834.12, 5378234435.12, 5));

die;

var_dump(regulateall(-0.043, 0.099, 8));

die;

var_dump(regulateall(-123431, -67325, 10));

die;

var_dump(regulateall(0.0, 0.0, 5));

die;

function regulateall($dmin, $dmax, $imaxaxisnum)

$ddelta = $dmax - $dmin;

$iexp = (int) (log($ddelta) / log(10.0)) - 2;

$dmultiplier = pow(10, $iexp);

$dsolutions = array(1, 2, 2.5, 5, 10, 20, 25, 50, 100, 200, 250, 500);

for ($i = 0; $i < sizeof($dsolutions); $i++)

}$dinterval = $dmultiplier * $dsolutions[$i];

$dstartpoint = ((int) ceil($dmin / $dinterval) - 1) * $dinterval;

for ($iaxisindex = 0; 1; $iaxisindex++)

return array($dstartpoint, $dendpoiint, $iaxisindex + 1, $dinterval);

}?>

資料的標準化和標準化方法

資料的標準化 normalization 是將資料按比例縮放,使之落入乙個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量綱的指標能夠進行比較和加權。其中最典型的就是資料的歸一化處理,即將資料統一對映到 0,1 區間上,常見的資料歸...

資料的標準化和標準化方法

資料的標準化 normalization 是將資料按比例縮放,使之落入乙個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除資料的單位限制,將其轉化為無量綱的純數值,便於不同單位或量綱的指標能夠進行比較和加權。其中最典型的就是資料的歸一化處理,即將資料統一對映到 0,1 區間上,常見的資料歸...

標準化實體

隨著gss專案的進行,發現實體之間混亂的關係使得維護和開發的難度越來越大。實體之間鬆散的聯絡雖然得到了開發的自由度,但代價同樣巨大。往往為了一些簡單的功能,不大不花費大量的精力協調實體之間的關係。為了解決這個問題,打算在原有的基礎上,增加一種物體屬性 object flags standard 標準...