天天看點

matlab imagesc 平滑,在matlab中,如何使用imagesc在2D熱圖中“平滑”像素

interp2可能在這裡使用.使用資料作為關鍵點,然後建立一個更精細的點網格,跨越相同的寬度和高度,并插入關鍵點之間.

像這樣的東西:

%// Define your data

data = [1 1 1 1 1 1 1 1 1 1; 1 1.04 1.04 1.04 1.03 1 1.01 1.01 1.03 1.01; 1.36 1.3 1.25 1.2 1.15 1.1 1.2 1.13 1.07 1.11; 3.65 3.16 2.94 2.68 2.39 2.22 2.17 1.95 1.79 1.81; 5.91 5.75 5.47 5.3 4.98 4.79 4.62 4.55 4.38 4.19; 6 6 5.99 5.83 5.49 5.33 5.14 4.94 4.77 4.74];

%// Define integer grid of coordinates for the above data

[X,Y] = meshgrid(1:size(data,2), 1:size(data,1));

%// Define a finer grid of points

[X2,Y2] = meshgrid(1:0.01:size(data,2), 1:0.01:size(data,1));

%// Interpolate the data and show the output

outData = interp2(X, Y, data, X2, Y2, 'linear');

imagesc(outData);

%// Cosmetic changes for the axes

set(gca, 'XTick', linspace(1,size(X2,2),size(X,2)));

set(gca, 'YTick', linspace(1,size(X2,1),size(X,1)));

set(gca, 'XTickLabel', 1:size(X,2));

set(gca, 'YTickLabel', 1:size(X,1));

%// Add colour bar

colorbar;

底部的代碼是必需的,因為定義更精細的網格最終會增加圖像的大小.我需要重新标記軸以恢複原始尺寸.

我們得到這個:

小筆記

我正在使用MATLAB R2014a,預設的顔色圖是jet.您使用的是R2014b,預設的彩色地圖是parula.你不會得到和我一樣的顔色分布,但你會得到你想要的平滑度.