Temperature distribution contour plot
27 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Bavi John
il 30 Ott 2020
Modificato: Cris LaPierre
il 30 Ott 2020

I want to create a contour plot,like above, of a plate with temperatures at specific points on the plate. The data should be interpolated bicubical. Now i have just a few points on my plate but wanted the contour and so the interpolated data over the full size of the plate is this possible?
Below you can find some example data with x- and y-coordinates and also some temperatures corresponding to the coordinates.
X_Plate=200; % length mm
Y_Plate=400; % heigth mm
x=[-80 -50 0 50 60]; % x-coordinates
y=[-150 -100 0 100 130]; % y-coordinates
T=[15 20 30 10 5]; % Temperature °C
% the coordinate system has its origin in the center of the plate
I would be very pleased if someone could help me.
0 Commenti
Risposta accettata
Cris LaPierre
il 30 Ott 2020
Modificato: Cris LaPierre
il 30 Ott 2020
In order to create a contour plot, you will need to have a temperature measurement for each (x,y) permutation. This means T needs to be a matrix with the same number of rows as there are values in y, and the same number of columns as there are values in x. The column and row indices of T are the x and y coordinates in the plane, respectively.
x=[-80 -50 0 50 60]; % x-coordinates
y=[-150 -100 0 100 130]; % y-coordinates
T=[15 20 30 10 5]; % Temperature °C
z=ones(5,1)*T
contourf(x,y,z)
5 Commenti
Cris LaPierre
il 30 Ott 2020
Modificato: Cris LaPierre
il 30 Ott 2020
You would apply the principle, rather than the implementation. Here, you need to define x and y as matrices I think.Then, using the same T values as before, create z using the linear indexing of the (x,y) coordinates.
x=[-80 0 30 60]; % x-coordinates
y=[-10 0 50 140];
[X,Y] = meshgrid(x,y)
T=[15 20 30 10 5]; % Temperature °C
z=zeros(length(y),length(x));
% Create linear index of the desired x and y value pairs
lind = sub2ind([4,4],[2 4 2 3 1],[2 2 1 3 4]);
z(lind) = T
contourf(X,Y,z)
colorbar
Più risposte (1)
Ameer Hamza
il 30 Ott 2020
Modificato: Ameer Hamza
il 30 Ott 2020
You first need to use scatteredInterpolant to convert the data to a grid format and then call contourf(). Since you have very few data points, so the variation will also be small
x=[-80 -50 0 50 60]; % x-coordinates
y=[-150 -100 0 100 130]; % y-coordinates
T=[15 20 30 10 5]; % Temperature °C
% the coordinate system has its origin in the center of the plate
mdl = scatteredInterpolant(x(:), y(:), T(:), 'natural');
xg = linspace(min(x), max(x), 20);
yg = linspace(min(x), max(x), 20);
[Xg, Yg] = meshgrid(xg, yg);
Zg = mdl(Xg, Yg);
contourf(Xg, Yg, Zg, 10);

Vedere anche
Categorie
Scopri di più su Contour Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


