在Matlab中用传感器位置绘制温度数据

时间:2012-03-18 19:31:01

标签: matlab

我有一个房间,温度传感器随机散落。信息是:

vector x # x position of all sensors
vector y # y position of all sensors
vector T # temperature values of all sensors

我想以图形方式显示信息,如果可能的话会着色。我试过网格z must be a matrix

This thread非常接近,但我无法理解代码。我也进行了搜索here,但也无法理解。

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用scatter在不规则的x,y位置绘制颜色编码的温度信息:

%# take some sample data
x = [1.6294 1.8116 0.2540 1.8268 1.2647 0.1951 0.5570 1.0938 1.9150 1.9298 0.3152 1.9412 1.9143 0.9708 1.6006 0.2838 0.8435 1.8315 1.5844 1.9190]
y= [1.3115 0.0714 1.6983 1.8680 1.3575 1.5155 1.4863 0.7845 1.3110 0.3424 1.4121 0.0637 0.5538 0.0923 0.1943 1.6469 1.3897 0.6342 1.9004 0.0689]
T =[0.2072 0.4849 Inf 0.1919 -0.0632 0.0857 -0.2072 0.3756 0.1881 0.1575 -0.1752 0.0640 -0.1117 -0.0623 -0.1140 -0.2051 -0.1817 -0.0420 -0.3398 0.1215]

%# plot using scatter
dfig,scatter(x,y,[],T,'filled')

%# use more sensible colormap, have it range from -0.5 to 0.5 normalized temperature
colormap('hot')
caxis([-0.5 0.5])

%# change background for better contrast
set(gca,'color',[0.5 0.5 0.5])
set(gcf,'color',[0.5 0.5 0.5])

%# highlight outliers (e.g. overly hot readings) with a circle
hold on
hotIdx = T>0.5;
plot(x(hotIdx),y(hotIdx),'og','markerSize',14)

enter image description here

这是一个不同的色彩图,加上带有数据值的文字:

cmap = colormap('hot');
cmap = [flipud(cmap);cmap];
colormap(cmap)
caxis([-0.5 0.5])
hold on,for i=1:length(x),text(x(i),y(i)+0.03,num2str(T(i)),'horizontalalignment','center');end

enter image description here

答案 1 :(得分:0)

您必须在矩阵中交叉引用x,y和T向量,并使用两个轴向量作为第一个和第二个参数。 (对于我使用的冲浪)。

基本上像

for i = 1:n
    matrix(x(i),y(i)) = T(i)
end

为轴创建两个向量。

(我不确定它是()还是[]来访问矩阵)

如果你不知道我的意思,我可以花些时间为你提供一个完整的例子。

(另外看着“帮助冲浪”的着色)

matrix = zeros(4000,4000);

axisX = 0:1:3999;
axisY = 0:1:3999;

for i = 1:n
    x(i) = round(1000*x(i));
    y(i) = round(1000*y(i));
end

for i = 1:n
    matrix(x(i),y(i)) = T(i);
end

surf(axisX,axisY,matrix);

答案 2 :(得分:0)

如果您在常规网格上有温度读数,即x和y值的每个组合都有温度读数,那么您可以使用surf绘制连接它们的漂亮表面的数据。您需要在T2[m,n]处形成一个大小为n=size(x)的新温度矩阵m=size(y),以便Z(i,j)包含温度(x(j), y(i)) }。然后你可以拨打surf(x, y, T2)

在一般情况下,您只需plot3(x, y, T)即可获得一组积分。