Contour plot for a non rectangular object
27 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ghazwan
am 5 Okt. 2022
Kommentiert: William Rose
am 6 Okt. 2022
I have this case that I worked out in another software.
In the attached file, you can see the X,Y coordinates. The third column represents the results that I need to plot in a contour silimar to the one in the image above.
I tried several codes, but all of them plot on a rectagular area and/or not showing the same shape for the contour area. For example, the following code:
xyz = xlsread('data.xlsx');
x=xyz(2:end,1);
y=xyz(2:end,2);
z=xyz(2:end,3);
[X,Y]=meshgrid(min(x):max(x),min(y):max(y));
Z=griddata(x,y,z,X,Y);
contour(X,Y,Z)
0 Kommentare
Akzeptierte Antwort
William Rose
am 5 Okt. 2022
[X,Y]=meshgrid(x,y) makes a grid where all the x values are the same across the grid, and likewise for yhe y values.
You can fix it by making your own X and Y instead of using meshgrid.
Nx=41; Ny=9;
dx=1; dy=1; %adjust as desired
x=((0:Nx-1)-(Nx-1)/2)*dx; y=((0:Ny-1)-(Ny-1)/2)*dy;
[X,Y]=meshgrid(x,y); %initial approximation
Z1=X+2*Y;
subplot(211); surf(X,Y,Z1);
xlabel('X'); ylabel('Y'); axis equal; view(0,90)
%next: adjust the grid Y-values
Yadj=Y;
for i=1:Nx
if i<=5||i>=37
ymult=1;
elseif i>=32
ymult=(i-25)/12;
elseif i<=10
ymult=(17-i)/12;
else
ymult=0.5;
end
Yadj(:,i)=ymult*Y(:,i);
end
subplot(212); surf(X,Yadj,Z1);
xlabel('X'); ylabel('Yadj'); axis equal; view(0,90)
It works. The code to adjust the y-values is not very elegant, but it demonstrates the possibilities for creating a non-retangular grid.
4 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Contour Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!