对matlab中colormap的解释及fill、imshow的用法说明
這篇文章的主要目的在于對colormap的解釋,會涉及到fill和imshow的使用,因此首先解釋fill和imshow的用法。
fill的用法說明
fill就是填充一個多邊形區域。函數用法fill(x, y, colorspec),x是多邊形各點的x坐標,y是多邊形各點的y坐標,colorspec就是顏色指定,有兩種顏色指定的方法。
例子1:
x = [0, 0, 1, 1]; y = [0, 1, 1, 0]; fill(x, y, 'r'); %紅色也可以用RGB的方法指定顏色
x = [0, 0, 1, 1]; y = [0, 1, 1, 0]; fill(x, y, [0,0, 1]); %藍色例子2:
R = 10; theta = (1/16:1/8:1)*2*pi; x = R * cos(theta); y = R * sin(theta); fill(x, y, 'g');順便提一句,matlab里面有一個和fill功能相同的函數:patch,把fill替換成patch,效果一樣
colormap到底是什么東西
如果在matlab命令行中輸入
a = colormap
會發現a是一個N*3的矩陣,這個矩陣每一行代表一種顏色[r,g,b]其中r,g,b分別表示紅綠藍三種顏色的比例,0表示沒有,1表示最多。相信大家都明白這種顏色表示法,我就不羅嗦了。
這個colormap矩陣實際上就是一種顏色的映射,1表示a(1,:)這種顏色,2表示a(2,:)這種顏色。下面這個一個矩陣,就用COLB表示吧
ROLB = [1 0 0 0 1 00 0 1];如果用這個矩陣作為colormap,那么1就表示紅色,2就表示綠色,3就表示藍色
為了能夠做一個例子試一下這個colormap,就不得不提一個函數了:imshow。
imshow用法說明
imshow就是顯示一個圖片,這個圖片是用一個矩陣表示的,矩陣維數表示這幅圖片的像素大小,矩陣的數值就表示顏色。顏色的表示方法就與上面提到的colormap有關。
imshow(A,map),這個A是矩陣。A中的每一個數就表示map矩陣中的一行,也就是每個像素點都有了一個RGB顏色。
例子1:
ROLB = [1 0 0 0 1 0 0 0 1]; a = zeros(300, 100); a(1:100, :) = 1; a(101:200,:) = 2; a(201:end, :) = 3; imshow(a, ROLB);再來一個稍微高大上一點的:顯示法國國旗的圖片。法國國旗的顏色和尺寸我還特意去查了下
ROLB = [0,85/255,164/2551,1,1239/255,65/255,53/255]; a = zeros(200, 300); a(:, 1:100) = 1; a(:, 101:200) = 2; a(:, 201:300) = 3; imshow(a, ROLB); axis equal;現在可以用fill顯示復雜一點的顏色了:漸變色
我們想看看系統自帶的幾種colormap的顏色: spring, summer, autumn, winter
還記得fill函數的用法嗎:fill(x, y, colorspec)
其中colorspec還可以有第三種用法,指定每個點的顏色。這時colorspec是一個向量,該向量的長度跟x,y長度一致,向量中最小的值表示1,向量中最大值表示colormap的行數,向量中其他值通過線性插值得出。這時多邊形的每個點的顏色就確定了,多邊形的其他點就是通過顏色的插值得到,這就相當于添加了漸變色。
假設fill(x, y, colorspec)函數中colorspec是顏色設置向量,其中的值的范圍可以是任意范圍[min, max]。
那么min,max代表什么什么顏色呢? min代表colormap中的的第一行的顏色
max代表colormap中最后一行的顏色。
除此之外colorspec中其他值代表什么顏色呢,從colormap中插值顏色。
一個例子
colorspec = [1, 1.5, 2, 3]
colormap =
[0 0 0
0.5, 0.5, 0.5
1 1 1];
那么colorspec的1代表[0,0,0]顏色,3代表[1,1,1]顏色,2代表[0.5,0.5,0.5], 1.5代表[0.25,0.25, 0.25](插值)
下面是summer
下面是autumn
下面是winter
總結
以上是生活随笔為你收集整理的对matlab中colormap的解释及fill、imshow的用法说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ISATAP隧道技术及实践
- 下一篇: 用步进正弦激励法测量计算机声卡输出输入幅