Plotting contours of Z on an x-y axis where Z is not a function of x or y

21 ビュー (過去 30 日間)
JS
JS 2019 年 1 月 4 日
コメント済み: Walter Roberson 2021 年 10 月 25 日
Hello,
I have collected data of temperature measurements at certain coordinates in a room. I want to plot these temperature measurements on a contour map, where the X and Y axis are the perimeter (and dimensions) of the room, and the contours of Z are the temperature measurements I have taken. The total size of the room is x=7m, and y=10.6m. I cannot find a way of plotting a contour map where Z is not a function of x or y. The measurements of temperature (Z) at certain x- and y-coordinates in the room are shown below:
Coordinates Temperature
X Y Z
0.2 9.4 17.0
2 9.3 17.85
7 5 17.65
7 5 17.5
Is there a way of plotting this on a 2D contour map, where the values of Z are shown on the contours?

採用された回答

Aquatris
Aquatris 2019 年 1 月 4 日
編集済み: Aquatris 2019 年 1 月 7 日
You do not have a lot of data so the countour map will not look great. However what you need to do is;
% create data
x = [0.2 2 7 7];
y = [9.4 9.3 5 5];
z = [17 17.85 17.65 17.5];
% create xy axis grid
[X,Y] = meshgrid(x,y);
% create corresponding Z values, assume z = 0 for locations with no z data
Z = zeros(length(x),length(y)) ;
for i = 1:length(x)
for j = 1:length(y)
if i==j % z data exist for only for x(n) y(n) location, n = 1,2,3...
Z(i,j) = z(i);
end
end
end
contourf(X,Y,Z)
  2 件のコメント
JS
JS 2019 年 1 月 5 日
Thank you for this! This produces the kind of contour map that I want.
Saurabh Das
Saurabh Das 2020 年 7 月 2 日
Thanks very much. This was quite helpful!

サインインしてコメントする。

その他の回答 (2 件)

Walter Roberson
Walter Roberson 2020 年 7 月 2 日
You should probably be using scatteredInterpolant() or griddedInterpolant().
  3 件のコメント
Walter Roberson
Walter Roberson 2020 年 7 月 2 日
x = [0.2 2 7 7];
y = [9.4 9.3 5 5];
z = [17 17.85 17.65 17.5];
N = 100;
xvec = linspace(min(x), max(x), N);
yvec = linspace(min(y), max(y), N);
F = scatteredInterpolant(x(:), y(:), z(:));
[X, Y] = ndgrid(xvec, yvec);
Z = F(X, Y);
surf(X, Y, Z, 'edgecolor', 'none');
Note that your last two X, Y coordinates are the same but different Z: the data will be averaged.
You effectively only have three different points with this data, so the output is a plane.
Saurabh Das
Saurabh Das 2020 年 9 月 30 日
Thanks very much. It was helpful!

サインインしてコメントする。


Vidya shree V
Vidya shree V 2020 年 9 月 24 日
I have R Z T value how to plot contour graph in matlab
  4 件のコメント
Rita Douaihy
Rita Douaihy 2021 年 10 月 25 日
Hello did you find an answer to your question ? The above script did not work for me and I have similar case were X,Y and Z values are data in an excel sheet and not related
Walter Roberson
Walter Roberson 2021 年 10 月 25 日
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/369253/plotSecond.xlsx';
T = readmatrix(filename);
X = T(2:end,1);
Y = T(1,2:end);
Z = T(2:end,2:end).'; %notice the transpose
surf(X, Y, Z, 'edgecolor', 'none');

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeContour Plots についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by