从2D到1D绘制函数作为热图:Matlab

时间:2017-05-02 12:31:59

标签: matlab

假设我有一个从2D坐标空间到1D值的函数w,例如

w(a,b) := min(a,b)

我想在Matlab中将此函数表示为热图。

例如,我在笛卡尔平面上绘制一个正方形,其顶点为(0,0)(0,1)(1,0)(0,0)。然后,我为方形内的区域着色,为(a,b) (c,d)w(a,b)=w(c,d)中的任意两对点import pyaudio p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paFloat32, channels=1, rate=44100, output=True) data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes while data != '': stream.write(data) data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes stream.stop_stream() stream.close() p.terminate() 分配相同的颜色。

我对热图的理解是否正确?如果是这样,我怎样才能在Matlab中实现这一目标?

1 个答案:

答案 0 :(得分:3)

您可以使用surf来实现此目的,从上方查看表面看起来像热图。有关详细信息,请参阅注释代码:

% Define axes points as [0,0.1,0.2,...,1]
ax = 0:0.1:1;  
% Make grid of values corresponding to min(x,y)
xy = bsxfun(@min, ax, ax');
% Plot
surf(xy); % Plot surface
view(2);  % Look from "above" onto x-y plane
set(gca, 'XTickLabel', ax) % Set x-axis labels
set(gca, 'YTickLabel', ax) % Set y-axis labels
colorbar; % Show colorbar as a legend

输出:

heatmap

如果min只是一个示例,您可以使用自定义函数对此进行扩展。

ax = 0:0.1:1;  
% Define function
w = @(a,b) a - exp(b)
% Use custom function inside bsxfun
xy = bsxfun(w, ax, ax');
surf(xy); % ... etc

有关详细信息,请参阅文档:https://uk.mathworks.com/help/matlab/ref/bsxfun.html

另请参阅pcolor的文档,这些文档会创建2D颜色图,因此不需要进行透视更改,contourf概述区域并非所有正方形。