假设我有一个从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中实现这一目标?
答案 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
输出:
如果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