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 Comments

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.

Sign in to comment.

 Accepted Answer

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');

More Answers (0)

Categories

Find more on Convert Image Type in Help Center and File Exchange

Products

Release

R2022a

Asked:

on 6 Mar 2023

Commented:

on 7 Mar 2023

Community Treasure Hunt

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

Start Hunting!