How to create a non-uniform 2d grid?
100 views (last 30 days)
Show older comments
Hi all, I have created a grid as shown in below image
But my aim is to create a grid in the following way
Can anyone help me in creating this type of mesh. Please find below code,
clear all
clc
L=1;
nx=50;
ny=50;
x1=linspace(0,0.4,10);
x2=linspace(0.42,1,40);
x=cat(2,x1,x2);
y1=linspace(0,0.4,10);
y2=linspace(0.42,1,40);
y=cat(2,y1,y2);
[X,Y]=meshgrid(x,y);
plot(X,Y,'k',Y,X,'k');
Thank you all.
0 Comments
Answers (2)
Gregory Gargioni
on 24 Sep 2020
Edited: Gregory Gargioni
on 24 Sep 2020
clear all; close all;
alx3 = 1.0; %LENGTH X
aly3 = 0.5; %LENGTH Y
nx = 50; %NODES X
ny = 50; %NODES Y
str3 = 1.2; %STRETCH
%HYPERBOLIC TANGENT-TYPE CLUSTERING
nxm=nx-1;
tstr3=tanh(str3);
xc(1)=0.0;
for kc=2:nx;
z2dp=(2*kc-nx-1)/(nxm);
xc(kc)=(1+tanh(str3*z2dp)/tstr3)*0.5*alx3;
end
nym=ny-1;
yc(1)=0.0;
for kc=2:ny;
z2dp=(2*kc-ny-1)/(nym);
yc(kc)=(1+tanh(str3*z2dp)/tstr3)*0.5*aly3;
end
[X,Y]=meshgrid(xc,yc);
hold on;
plot(X,Y,'k');
plot(X.',Y.','k');
axis equal;
xlim([0.0 alx3]);
ylim([0.0 aly3]);
You have an infinity different ways to difine how you will strach your mesh (uniform, HYPERBOLIC TANGENT-TYPE, CLIPPED CHEBYCHEV-TYPE and much more...), I picked up one method, because the trick is the last part of the code:
hold on;
plot(X,Y,'k'); %Creates the VERTICAL lines
plot(X.',Y.','k'); %Creates the Horizontal lines --> I am using the transpose matrices here
The code will give you the following mesh:
Hopefully it will help you
1 Comment
Venkata Siva Krishna Madala
on 5 Feb 2018
Hi Ganesh,
I understand that you are trying to create a Mesh(2nd image) with non-uniform width between the lines. My understanding is that you would like to change/increase the line width when compared to the first image. Please correct me if I am wrong.
7 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!