Построение данных о температуре с помощью датчиков в Matlab - PullRequest
2 голосов
/ 18 марта 2012

У меня есть комната, в которой датчики температуры разбросаны случайным образом. Информация:

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.

Эта тема очень близка, но я не смог понять код. Я также выполнил поиск здесь , но тоже не смог его понять.

Ответы [ 3 ]

3 голосов
/ 19 марта 2012

Самое простое - использовать 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

0 голосов
/ 18 марта 2012

Если у вас есть показания температуры на регулярной сетке, т.е. каждая комбинация значений 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), чтобы получить набор очков.

0 голосов
/ 18 марта 2012

Вы должны перекрестно ссылаться на векторы 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...