2D plot of deformation data

Hi,
I have txt file with information of x and y coordnates and c as color data and u,v as defromation data which is for displacment.
I want to plor the 2D of the displacment with its color. what I was able to do is plot the data with no defromation, displacment, as shown in the image
my code is after I load the data.
x = data(:,1);
y = data(:,2);
c = data(:,3);
U = data(:,4);
V = data(:,5);
n = 500
[X, Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n));
ColorData = griddata(x,y,c,X,Y);
pcolor (X,Y,ColorData);
When I used the U and V I got this image

5 个评论

hello
can you share your data file ?
Hi,
I attached a data similar to the data used to the plot in my question but same with different deformation
[edit: fix typos and change two lines from text to code]
You say "When I used the U and V I got this image", but the code you posted does not use U and V. It uses the c array for color. If you attach array "data" array as a file, others could see. Are the values of c (which are given, not calculated in your code) derived from U and V, or are the c values independent of U and V? If they are independent, and if you are interested in using color to represent the displacements that are in the U and V vectors, then you can ignore the c values.
Since displacement includes both U and V components, you have to decide how you want to combine them for plotting purposes. Two obvious options (among many possible options) are
d=sqrt(U.^2+V.^2);
or
d=max(U,V);
Then you use d to compute the ColorData:
ColorData = griddata(x,y,d,X,Y);
and plot as before.
what I ment is switching the code from
ColorData = griddata(x,y,c,X,Y);
to
ColorData = griddata(U,V,c,X,Y);
but I will try to do your code in my code and see what will happen
Thank you
You said you wante d to switch the code from
ColorData = griddata(x,y,c,X,Y);
to
ColorData = griddata(U,V,c,X,Y);
I don;t think this will do what you want, because griddata is a 2D interpolation routine. In the first form, it assume you measured c at points x and y, and it interpolates those measurements to the gird X,Y. But U,V are not measurement locations - they are measured values.

请先登录,再进行评论。

 采纳的回答

hello again
basically used the same code for U and V and got these 3 plots
for ColorData
for U
for V
code :
data = readmatrix('data.txt');
x = data(:,1);
y = data(:,2);
c = data(:,3);
u = data(:,4);
v = data(:,5);
n = 500;
[X, Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n));
ColorData = griddata(x,y,c,X,Y);
U = griddata(x,y,u,X,Y);
V = griddata(x,y,v,X,Y);
figure(1),
pcolor(X,Y,ColorData);
shading('interp')
colormap('jet');
figure(2),
pcolor(X,Y,U);
shading('interp')
colormap('jet');
figure(3),
pcolor(X,Y,V);
shading('interp')
colormap('jet');

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Convert Image Type 的更多信息

产品

版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by